实验4:栈和队列的基本操作实现及其应用
一、实验目的
1、 熟练掌栈和队列的结构特点,掌握栈和队列的顺序存储和链式存储结构和实现。
2、 学会使用栈和队列解决实际问题。
二、实验内容
1、 自己确定结点的具体数据类型和问题规模:
分别建立一个顺序栈和链栈,实现栈的压栈和出栈操作。
分别建立一个顺序队列和链队列,实现队列的入队和出队操作。
2、 设计算法并写出代码,实现一个十将二进制转换成2进制数。
循环队列的实现:
#include
using namespace std;
const int QueueSize=100;
class CirQueue
{
public:
CirQueue(){front=rear=QueueSize-1;} //构造函数,初始化空队列
~CirQueue(){} //析构函数
void EnQueue(int x); //入队操作,将队列元素出队
int DeQueue(); //出队操作,将队头元素出队
int GetQueue(); //取队头元素(并不删除)
int Empty(){if(front==rear) return 1;else return 0;} //判空
private:
int data[QueueSize]; //存放队列元素的数组
int front,rear; //队头和队尾指针
};
void CirQueue::EnQueue(int x)
{
if((rear+1)%QueueSize==front)throw"上溢";
rear=(rear+1)%QueueSize; //队尾指针在循环意义下加1
data[rear]=x; //在队尾处插入元素
}
int CirQueue::DeQueue()
{
if(rear==front)throw"下溢";
front=(front+1)%QueueSize; //队头指针在循环意义下加1
return data[front]; //读取并返回出队前的队头元素
}
int CirQueue::GetQueue()
{
int i;
if(rear==front) throw"下溢";
i=(front+1)%QueueSize; //注意不要给队头指针赋值
return data[i];
}
int main()
{
int x,n,d,flag,tab;
CirQueue C;
flag=0;
do{
cout<<"输入你要的插入的数:"<
>n;
cout<<"是否继续插入(1/0)"<
>d;
C.EnQueue(n);
}
while(d);
cout<
<<"**********循环队列的实现**********"<
<
>tab; switch(tab) { case 1:{ cout<
<<"输入你要的插入的数:"<
>x; C.EnQueue(x); break; } case 2: { cout<
<<"删除的数是 :"<
执行结果截图: