栈的链接存储——链栈
2016-05-16 23:46
267 查看
通常链栈用单链表表示,因此其结点结构与单链表的结点结构相同。
因为只能在栈顶执行插入和删除操作,显然以单链表的头部做栈底是最方面的,而且没有必要像单链表那样为了运算方便附加一个头结点。
代码:
因为只能在栈顶执行插入和删除操作,显然以单链表的头部做栈底是最方面的,而且没有必要像单链表那样为了运算方便附加一个头结点。
代码:
#include<iostream> using namespace std; #define null 0 struct Node { int data; Node *next; }; class LinkedStack { private: Node *top; int data[]; public: LinkedStack(){top=null;} LinkedStack(int a[],int n); ~LinkedStack(){} void Push(int x); int Pop(); int GetTop(); int Empty(); void PrintStack(); void Destroy(); }; LinkedStack::LinkedStack(int a[],int n) { top=null; for(int i=0;i<n;i++) { Node *p=new Node; p->data=a[i]; p->next=top; top=p; } } void LinkedStack::Push(int x) { Node *p=new Node; p->data=x; p->next=top; top=p; } int LinkedStack::Pop() { if(top==null) throw "下溢"; int x=top->data; Node *p=new Node; p=top; top=top->next; delete p; return x; } int LinkedStack::GetTop() { if(top==null) throw "下溢"; return top->data; } int LinkedStack::Empty() { if(top==null) return 1; else return 0; } void LinkedStack::PrintStack() { Node *s=new Node; s=top; while(s!=null) { cout<<s->data<<" "; s=s->next; } cout<<endl; } void LinkedStack::Destroy() { while(top!=null) { Node *p=new Node; p=top; top=top->next; delete p; } } int main() { int a[5]={3,9,4,8,5}; LinkedStack ls(a,5); ls.Push(1); ls.PrintStack(); cout<<ls.GetTop()<<endl; ls.Push(2); ls.PrintStack(); cout<<ls.GetTop()<<endl; ls.Pop(); ls.PrintStack(); cout<<ls.Empty()<<endl; ls.Pop(); ls.PrintStack(); cout<<ls.Empty()<<endl; ls.Destroy(); cout<<ls.Empty()<<endl; return 0; }
相关文章推荐
- pythonchallenge 解谜 Level 1
- 你不努力,谁也给不了你想要的生活
- 单元测试练习
- Using AngularJS with .NET MVC 5
- HTML5标签绘制渐变图形的一些总结
- 2006浙大火星A+B
- projectne10向ZedBoard移植
- 使用win2d实现萤火虫粒子效果
- http://www.doc88.com/p-7374285513754.html
- Android Studio 常用快捷键
- Add Two Numbers
- hdu_2224_The shortest path(dp)
- ZOJ 2412 Farm Irrigation
- tomcat session复制
- ZOJ 2412 Farm Irrigation
- hdu_2224_The shortest path(dp)
- 利用组合控件实现布局文件抽取复用
- 300. Longest Increasing Subsequence
- hdu-5668- Circle 逆元+卡特兰数知识模板
- JAVA——OutputStream类和InputStream类