数据结构学习笔记
2015-09-14 17:33
197 查看
前记:我知道这些代码很简单,只是让我想起了去年大一的生活,虽然我玩了挺多的,但也确实看了不少书,不仅是技术方面的,也有文学方面(写了大约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 ; } 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(); } }
相关文章推荐
- LRU缓存策略
- 【线性表项目1 - 线性表相关函数1】
- 数据结构实践——顺序表的基本运算2
- 【软考视频】数据结构与算法基础
- 线性表【项目 - 求集合并集】
- 数据结构实践——顺序表的基本运算
- 程序员求职成功路(2) - 第3章 数据结构与算法
- 程序员面试宝典-2(数据结构与算法)
- *第三周*数据结构实践项目一【顺序表的基本运算】
- 数据结构,算法与应用(4)
- 【顺序表项目1 - 顺序表的基本运算】
- 数据结构,算法与应用(3)
- 数据结构,算法与应用(2)
- 数据结构,算法与应用(1)
- 第2周SHH数据结构—【项目3-体验复杂度(1)】
- 数据结构实验一:顺序表
- 栈的基本操作-数据结构
- 数据结构之栈的链式存储7-(入栈,出栈等)
- 【前端也要学点数据结构】 神奇的树状数组
- 数据结构之栈的顺序存储6-(入栈,出栈等)