您的位置:首页 > 其它

实验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;
}

未修改前的结果:





修改后的结果:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐