实验4:栈和队列的基本操作实现及其应用
一、实验目的
1、 熟练掌栈和队列的结构特点,掌握栈和队列的顺序存储和链式存储结构和实现。
2、 学会使用栈和队列解决实际问题。
二、实验内容
1、 自己确定结点的具体数据类型和问题规模:
分别建立一个顺序栈和链栈,实现栈的压栈和出栈操作。
分别建立一个顺序队列和链队列,实现队列的入队和出队操作。
2、 设计算法并写出代码,实现一个十将二进制转换成2进制数。
顺序栈的实现
#include
using namespace std;
const int StackSize=10;
class SeqStack{
public:
SeqStack(){top=-1;} //构造函数,初始化一个空栈
~SeqStack(){} //析构函数为空
void Push(int x); //入栈操作,元素x 入栈
int Pop(); //出栈操作,栈顶元素弹出
int GetTop(){if(top!=-1)return data[top];} //取栈顶元素(不删除)
int Empty(){if(top==-1) return 1;else return 0;} // 判断是否空栈
private:
int data[StackSize]; //存放栈顶元素的数组
int top; //栈顶指针,为栈顶元素在数组中的下标
};
void SeqStack:: Push(int x)
{
if(top==StackSize-1)throw "上溢";
data[++top]=x;
}
int SeqStack::Pop()
{
int x;
if(top==-1)throw"下溢";
x=data[top--];
return x;
}
int main()
{
int x,n,d,flag,tab;
SeqStack S;
flag=0;
do{
cout<<"输入你要的插入的数:"<>n;
cout<<"是否继续插入(1/0)"<>d;
S.Push(n);
}
while(d);
cout<>tab;
switch(tab)
{
case 1:{
cout<>x;
S.Push(x);
break;
}
case 2:
{
cout<
执行结果截图: