实验4:栈和队列的基本操作实现及其应用——链栈
2017-10-16 21:20
651 查看
一、实验目的
1、 熟练掌栈和队列的结构特点,掌握栈和队列的顺序存储和链式存储结构和实现。2、 学会使用栈和队列解决实际问题。
二、实验内容
1、自己确定结点的具体数据类型和问题规模:分别建立一个顺序栈和链栈,实现栈的压栈和出栈操作。
分别建立一个顺序队列和链队列,实现队列的入队和出队操作。
2、设计算法并写出代码,实现一个十将二进制转换成2进制数。
3、选做题(*)
设计一个模拟饭堂排队打饭管理软件,实现“先来先打饭”的排号叫号管理。
三、实验步骤
1、依据实验内容分别说明实验程序中用到的数据类型的定义;2、相关操作的算法表达;
3、完整程序;
4、总结、运行结果和分析。
5、总体收获和不足,疑问等。
四、实验要求
1、 按照数据结构实验任务书,提前做好实验预习与准备工作。2、 加“*”为选做题。做好可加分。
3、 严格按照数据结构实验报告模板和规范,及时完成实验报告。
4、 在个人主页上发文章提交作业。
5、 实验课会抽查3-5人,希望你可以被查到!
源代码如下:
#include<iostream> using namespace std; struct Node{ int data; Node*next; }; const int StackSize=10; class LinkStack { public: LinkStack(){top=NULL;} ~LinkStack(); void Push(); int Pop(); int GetTop() { if(top!=NULL) return top->data; }; int Empty(){ if(top==NULL) return 1; else return 0; } private: Node*top; }; void LinkStack::Push() { int x; Node*s; s=new Node;s->data=x; //申请一个数据域为x的结点s s->next=top;top=s; //将结点s插在栈顶 } int LinkStack::Pop() { int x; Node*p; if(top==NULL)throw"下溢"; x=top->data; p=top; top=top->next; delete p; return x; } LinkStack::~LinkStack() { while(top!=NULL) { Node *q; q=top; top=top->next; delete q; } } int main() { int m,i; LinkStack s; do { cout<<"请输入入栈数据:"<<endl; cin>>m; cout<<"如果继续输入数据,请输入1;如果结束,请输入0:"; 9033 cin>>i; s.Push(); } while(i); cout<<"出栈数据为:"<<s.Pop()<<endl; cout<<"栈顶数据为:"<<s.GetTop()<<endl; cout<<"栈空输出1,非栈空输出0:"<<s.Empty()<<endl; return 0; }
未修改前的结果:
修改后的结果:
相关文章推荐
- 实验4:栈和队列的基本操作实现及其应用之《链栈》
- 实验4:栈和队列的基本操作实现及其应用之《链栈》
- 实验4:栈和队列的基本操作实现及其应用之《链栈》
- 实验4:栈和队列的基本操作实现及其应用之《链队列》
- 实验4:栈和队列的基本操作实现及其应用之《链队列》
- 实验4:栈和队列的基本操作实现及其应用之《排号叫号管理》
- 实验4:栈和队列的基本操作实现及其应用之《顺序队列》
- 实验4:栈和队列的基本操作实现及其应用——进制转换以及实验总结
- 实验3:栈和队列的基本操作实现及其应用——十进制转换为二进制
- 实验4:栈和队列的基本操作实现及其应用之《进制转换》
- 实验三:栈和队列的基本操作实现及其应用——顺序栈
- 数据结构:实验四栈和队列的基本操作实现及其应用
- 实验4:栈和队列的基本操作实现及其应用——循环队列
- 实验4:栈和队列的基本操作实现及其应用之《进制转换》
- 实验3:栈和队列的基本操作实现及其应用——顺序队列和链队列
- 实验4:栈和队列的基本操作实现及其应用之《顺序栈》
- 实验4:栈和队列的基本操作实现及其应用之《链队列》
- 实验4:栈和队列的基本操作实现及其应用——链队列
- 实验三 栈和队列的基本操作实现及其应用
- 实验三 栈和队列的基本操作实现及其应用 (1)