循环队列的实现

来源:互联网 发布:ps软件培训班 编辑:程序博客网 时间:2024/06/07 16:23

实验4:栈和队列的基本操作实现及其应用

一、实验目的

1、 熟练掌栈和队列的结构特点,掌握栈和队列的顺序存储和链式存储结构和实现。

2、 学会使用栈和队列解决实际问题。

二、实验内容

1、 自己确定结点的具体数据类型和问题规模:

分别建立一个顺序栈和链栈,实现栈的压栈和出栈操作。

分别建立一个顺序队列和链队列,实现队列的入队和出队操作。

2、 设计算法并写出代码,实现一个十将二进制转换成2进制数。


循环队列的实现:

#includeusing 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;  //队头指针在循环意义下加1return 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<

执行结果截图:



原创粉丝点击