一、实验目的
1、 熟练掌栈和队列的结构特点,掌握栈和队列的顺序存储和链式存储结构和实现。
2、 学会使用栈和队列解决实际问题。
二、实验内容
1、自己确定结点的具体数据类型和问题规模:
分别建立一个顺序栈和链栈,实现栈的压栈和出栈操作。
分别建立一个顺序队列和链队列,实现队列的入队和出队操作。
2、设计算法并写出代码,实现一个十将二进制转换成2进制数。
3、选做题(*)
设计一个模拟饭堂排队打饭管理软件,实现“先来先打饭”的排号叫号管理。
三、实验步骤
1、依据实验内容分别说明实验程序中用到的数据类型的定义;
2、相关操作的算法表达;
3、完整程序;
4、总结、运行结果和分析。
5、总体收获和不足,疑问等。
四、实验要求
1、 按照数据结构实验任务书,提前做好实验预习与准备工作。
2、 加“*”为选做题。做好可加分。
3、 严格按照数据结构实验报告模板和规范,及时完成实验报告。
4、 在个人主页上发文章提交作业。
5、 实验课会抽查3-5人,希望你可以被查到!
五、源代码
#include<iostream>
using namespace std;
const int Max=30;
class Change
{
public:
Change(){top=-1;}
~Change(){}
void Push(int x);
int Pop();
void Print();
int Empty(){
if(top==-1)
return 1;
else
return 0;
}
private:
int top;
int data[Max];
};
void Change::Push(int x)
{
if(top==Max-1) throw"上溢";
data[++top]=x;
}
int Change::Pop()
{
int x;
if(top==-1) throw"下溢";
x=data[top--];
return x;
}
void Change::Print()
{
if(top==-1) cout<<"NONE!";
while(top!=-1)
cout<<Pop();
}
int main()
{
Change a;
int p,ab;
cout<<"请输入一个十进制数:";
cin>>ab;
while(ab!=0)
{
p=ab%2;
a.Push(p);
ab=ab/2;
}
cout<<"二进制为:";
a.Print();
cout<<endl;
return 0;
}
结果:
六、心得体会
这一次实验用不同的方法做了几次都做不成,都出现了同一个问题,就是书写问题。让我找了好几天,是因为不太熟练的原因,让我重新拾起语法!