数据结构学习笔记

来源:互联网 发布:encore制谱软件 编辑:程序博客网 时间:2024/05/20 15:41

前记:我知道这些代码很简单,只是让我想起了去年大一的生活,虽然我玩了挺多的,但也确实看了不少书,不仅是技术方面的,也有文学方面(写了大约10篇左右的文章,还投了稿),经济方面的,所以我大二的生活还是相对轻松简单的,回想我过去的岁月,深深地感觉确实是一份耕耘一份收获,不管那些大牛智商有多高,哪怕你一辈子也追不上那些大神,但只要你也走在追赶他们的道路上,蓦然回首,你会发现你其实已经收获了许多,况且人生也不完全是事业,每一个人都有自己的优势。不和他人比较,只和昨天的自己比较,确实是这样~~上代码的,也许对于我很简单的东西,刚入门的人却觉得很难,同理,我觉得难以理解的,肯定也有人觉得太简单了~~祝自己简单生活每一天么么哒~~

//注意用数组模拟栈,所有删除操作都是移动栈顶标记,因为数组难以进行删除操作#include <iostream>using namespace std;class Stack{private:    int *T;//动态申请空间的指针    int n;//栈内的元素个数    int maxsize;//栈的最大容量public:    Stack(int m);//创建栈    ~Stack(){delete []T;}    bool isempty(){return n==-1;}    bool isfull(){return n==maxsize;}    int  top();    void push(int x);    void pop();};Stack::Stack(int m)//传入多少个元素,鉴于栈是从0开始的所以必须最多到m-1{    maxsize=m-1;    T=new int[m];    n=-1;}int  Stack::top(){    if (isempty())        cout<<"栈已经为空了么么哒~~\n";    else      return T[n];}void Stack::push(int x){    if (isfull())        cout<<"我已经满了么么哒\n";    else        T[++n]=x;}void Stack::pop(){    if (isempty())      cout<<"栈已经为空么么哒\n";    else     n--;} int main() {     int k;     Stack A(5);//存放奇数     Stack B(5);//存放偶数     while(cin>>k)     {         if (k<0)            cout<<"请输入正确的数,范围0~1000\n";         else         if (k%2)            A.push(k);         else            B.push(k);     }     while(!A.isempty())     {         cout<<A.top()<<" ";         A.pop();     }     cout<<endl;     while(!B.isempty())     {         cout<<B.top()<<" ";         B.pop();     }     cout<<endl;     return 0; }

//用链接存储存储就不需要最大容量,注意用链杰存储就头节点就应当指向栈顶,插入元素时将新节点的下一个指向头节点,再让头节点为新节点,因为如果栈底为头节点,那么每次找栈顶压入删除都要花费大量时间~~#include <iostream>using namespace std;class Stack;class node{private:     int element;     node *next;     friend Stack;};class Stack{private:    int n;    node *head;public:     Stack(){n=-1;}     bool isempty(){return n==-1;}     void push(int x);     void pop();     int top();};void Stack::push(int x){    node *p=new node;    p->element=x;    p->next=head;    head=p;    n++;}void Stack::pop(){if (isempty())cout<<"栈已经为空"<<endl;else{ node *q=head;//先记下头节点,再让头节点的指向下一个 head=head->next; delete(q); n--;} }int Stack::top(){   if (isempty())   cout<<"栈已经为空"<<endl;else return head->element;}int main(){    int i;    Stack A;    for (i=1;i<=10;i++)    A.push(i);    for (i=1;i<=10;i++)    {        cout<<A.top()<<" ";        A.pop();    }}


0 0
原创粉丝点击