循环队列

 我来答
会哭的礼物17
2022-07-01 · TA获得超过1.2万个赞
知道大有可为答主
回答量:6387
采纳率:100%
帮助的人:36.3万
展开全部

先进先出,后进后出 :比如生活中的排队买票,先来的先买,后来的排队,最后一个最后一个买。

假如队列是一个固定长度的队列,而进来的元素都 只能 往队列的后面排,最终会排到队列的最后一个位置。而前面如果有元素已经出来空出了位置,但此时也没法让其他元素进来,出现了伪溢出的现象(虽然队列已经排到尾了,但前面还有空位),而循环队列就解决了这个问题。

当队列排到尾,而前面还有空位的话,那就从头开始进入。但队列依旧遵循先进先出的原则,性质并没有被改变。

循环队列需要以下的几个属性:
int maxSize :记录队列的最大容量
T[] arr :由于是固定长度,所以用数组来存储元素,而长度就根据maxSize来初始化
int front :记录队列中头元素的坐标
int rear :记录队列中末尾元素 的后一位坐标 (比如当前最后一个元素的坐标为2,则rear = 3)

判断 队空 :当front == rear 为空
判断 队满 :当 front == (rear+1) % maxSize 为满

情况一: 当 front<rear 时,size = rear - front;
情况二: 当 front > rear 时,size = rear + (maxSize-front)

为了方便,通过(rear + maxSize - front) % maxSize 公式来获取元素个数;

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式