循环队列的实现
来源:互联网 发布: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<
执行结果截图:
阅读全文
0 0
- 队列----循环队列的实现
- 循环队列的实现
- 循环队列的实现
- 循环队列的实现
- 循环队列的实现
- 循环队列的实现
- 循环队列的实现
- 循环队列的实现
- 循环队列的实现
- 循环队列的实现
- 循环队列的实现
- 循环队列的实现
- 循环队列的实现
- 循环队列的实现
- 循环队列的实现
- 循环队列的实现
- 循环队列的实现
- 循环队列的实现
- 算法导论第4章习题解析
- 实验三 栈和队列的基本操作实现及其应用
- DockerHub基于Github自动化构建
- 链表学习记录
- LeetCode_697_Degree of an Array
- 循环队列的实现
- Linux下Vue开发环境搭建一篇全搞定
- 数据结构实验之栈与队列四:括号匹配
- CS231N-12-Visualizing & Understanding CNN
- JS(11)
- EasyPlay spring+springMVC+Hibernate框架搭建 一
- 微信JS-SDK说明文档---自己总结了config时的参数获取方式
- 自定义Unity闪屏ForAndroid
- bzoj 3594 方伯伯的玉米田 DP+树状数组优化 解题报告