顺序循环队列的基本操作
来源:互联网 发布:帝国cms视频管理系统 编辑:程序博客网 时间:2024/06/05 12:55
/*
名称:顺序循环队列的基本操作
说明:此处说明以下有关顺序循环队列的判断空,判断满的问题。此处采用的是少用一个存储元素。
此外,还可以采用增加一个标志位tag,即指示fro == rear是因为空还是因为满。
还有可以增加一个Q.size属性来判断是否达到空或者满的状态。
*/
//顺序队列的存储结构typedef struct{ int data[Maxsize]; //存放的队列元素 int fro,rear; //对头指针和队尾指针(头指针指向对头元素,尾指针指向队尾的下一个元素)}SqQueue;
//队列初始化void InitQueue(SqQueue & Q){ Q.fro = Q.rear = 0;}//判断空(少用一个存储单元)bool IsEmpty(SqQueue Q){ if(Q.fro == Q.rear) return true; else return false;}//判断满(少用一个存储单元)bool IsFull(SqQueue Q){ if((Q.rear+1)% Maxsize == Q.fro) return true; else return false;}//入队bool EnQueue(SqQueue &Q,int x){ if((Q.rear+1)% Maxsize != Q.fro) { Q.data[Q.rear] = x; Q.rear = (Q.rear+1) % Maxsize; return true; } else { cout<<"队列已满,入队失败!"<<endl; return false; }}//出队bool DeQueue(SqQueue &Q,int &x){ if(IsEmpty(Q)) { cout<<"队列为空,出队失败!"<<endl; return false; } else { x = Q.data[Q.fro]; Q.fro = (Q.fro+1)%Maxsize; return true; }}//打印出队列中的元素void PrintQueue(SqQueue Q){ int val = 0; while(!IsEmpty(Q)) { DeQueue(Q,val); cout<<val<<" "; } cout<<endl;}
阅读全文
0 0
- 循环顺序队列的基本操作
- 顺序队列(非循环)的基本操作
- 顺序循环队列的基本操作
- 顺序循环队列的基本操作
- 顺序循环队列的基本操作
- 线性表----循环队列(顺序表示)的基本操作
- 顺序循环队列的基本操作(2017.7.26)
- 数据结构--循环队列的顺序存储基本操作
- 顺序队列的基本操作
- 顺序队列的基本操作
- 顺序队列的基本操作;
- 顺序队列的基本操作
- 顺序队列的基本操作
- 顺序队列的基本操作
- 顺序队列的基本操作
- 顺序队列的基本操作
- 循环队列的基本操作
- 循环队列的基本操作
- 位运算符
- if,else优化
- Fragment 判断当前的fragment是否显示
- recycleview使用
- 技术人员如何面试?
- 顺序循环队列的基本操作
- windows系统上Mysql数据库的安装图解教程
- 基于用户投票的排名算法(二):Reddit
- 第三方远程控制工具TeamViewer的安装和使用教程,可下载window版和linux版,windows使用虚拟机可以与linux之间通讯
- man down+
- 如何更改图片的分辨率
- 【CodeForces 686 D. 】 【树的重心性质】
- 第九篇 Android Studio .so文件无法提交到svn
- bzoj 2037: [Sdoi2008]Sue的小球 动态规划