队列的顺序存储——循环队列
来源:互联网 发布:爱信诺金税盘开票软件 编辑:程序博客网 时间:2024/06/05 17:34
队列是只允许在一端进行插入操作,在另一端进行删除操作的线性表。
1.允许插入(也称入队、进队)的一端称为队尾,允许删除(也称出队)的一端称为队头。
队列的这种首尾相接的顺序存储称为循环队列。
1.为了实现元素出队之后,不移动其他的数据元素,并且可以循环利用空闲下来的数组空间。
2.队空的条件:start==rear。
3.队满的条件:(rear+1)%QueueSize==start。
代码:
#include<iostream>using namespace std;const int MaxSize=100;class CirQueue{private: int data[MaxSize]; int start,rear;public: CirQueue(){start=rear=MaxSize-1;} CirQueue(int a[],int n); ~CirQueue(){} void EnQueue(int x); int DeQueue(); int GetQueue(); int Empty(); void Destroy(); void PrintStack();};CirQueue::CirQueue(int a[],int n){ start=rear=MaxSize-1; if((rear+1)%MaxSize==start) throw "上溢"; for(int i=0;i<n;i++) { rear=(rear+1)%MaxSize; data[rear]=a[i]; }}void CirQueue::EnQueue(int x){ if((rear+1)%MaxSize==start) throw "上溢"; rear=(rear+1)%MaxSize; data[rear]=x;}int CirQueue::DeQueue(){ if(start==rear) throw "下溢"; start=(start+1)%MaxSize; return data[start];}int CirQueue::GetQueue(){ if(start==rear) throw "下溢"; int i=(start+1)%MaxSize; return data[i];}int CirQueue::Empty(){ if(rear==start) return 1; else return 0;}void CirQueue::Destroy(){ while(start!=rear) { start=(start+1)%MaxSize; }}void CirQueue::PrintStack(){ for(int i=(start+1)%MaxSize;i<=rear;i++) { cout<<data[i]<<" "; } cout<<endl;}int main(){ int a[5]={4,0,5,9,7}; CirQueue cq(a,5); cq.EnQueue(1); cq.PrintStack(); cq.EnQueue(2); cq.PrintStack(); cout<<cq.GetQueue()<<endl; cq.EnQueue(3); cq.PrintStack(); cout<<cq.Empty()<<endl; cout<<cq.GetQueue()<<endl; cout<<cq.DeQueue()<<endl; cq.PrintStack(); cq.Destroy(); cq.PrintStack(); cout<<cq.Empty()<<endl; return 0;}
0 0
- 队列的顺序存储——循环队列
- 队列的顺序存储结构---循环队列
- 队列的顺序存储结构(循环队列)
- 循环队列的顺序存储
- 循环队列的顺序存储
- 队列——顺序存储结构,循环队列
- 数据结构五—循环队列的顺序存储结构
- 循环队列---顺序存储
- 队列的顺序存储结构——循环队列 图解和代码实现
- 队列的顺序存储结构——循环队列 图解和代码实现
- 队列的顺序存储结构——循环队列 图解和代码实现
- 队列——顺序存储结构及其基本运算(循环队列的另一种表达方式)
- SqQueue循环队列的 顺序存储实现
- 循环队列的顺序存储实现
- 循环队列——队列的顺序表示和实现
- 循环队列——队列的顺序表示和实现
- 循环队列——队列的顺序表示和实现
- 数据结构:队列的顺序存储结构(循环队列)
- 展开与收起效果
- struts2 文件上传
- sql基础常用函数总结
- STM8L151 在IAR中实现Flash/EEPROM的擦写
- 欢迎使用CSDN-markdown编辑器
- 队列的顺序存储——循环队列
- [阶段一]Java基础语法-数据类型(1)
- 巧用绝对定位解决手机端文本框聚焦fixed定位失效
- 欢迎使用CSDN-markdown编辑器
- iOS Media Remote Controll 相关
- android studio下的ndk开发流程
- Spark-ML-基于云平台和用户日志的推荐系统
- java.io.File的路径获取方式分析
- 前段博客收藏