循环队列之循环队列长度和头尾指针关系

来源:互联网 发布:黑客帝国动画版 知乎 编辑:程序博客网 时间:2024/06/05 00:20

1、为什么会引入循环队列?

       对于顺序队列,头指针和尾指针开始时刻都指向数组的0下标元素。当加入新元素以后,尾指针向后移动,指向最后一个元素的下一个位置。

但是尾指针不能超过数组的最大范围。当有元素删除时,头指针向后移动。但是头指针不能低于数组的0下标。这样就会引入一种“假溢出”现象,

数组中存在空余的空间,但是由于尾指针已经在最大位置,不能加入元素。

2、循环队列是什么样的队列?

解决假溢出的方法:后面的满了,就从头在开始,形成头尾相接的循环,即循环队列。

存在的问题:front=rear即头指针和尾指针相等,但是对应两种情况:一种是队列是空,一种是队列是满。

所以,我们定义循环队列中空出一个位置为满队列状态。front指向头元素,rear指向尾元素的下一个位置。

3、循环队列达到队列满时的front和rear关系?

Quesize是队列的长度

(rear+1)%Quesize=front

4、循环队列的长度计算?

当rear大于front时,循环队列的长度:rear-front

当rear小于front时,循环队列的长度:分为两类计算 0+rear和Quesize-front即rear-front+Quesize

总的来说,总长度是(rear-front+Quesize)%Quesize



PS:总结一下,让自己梳理下。

0 0
原创粉丝点击