目录
一、指针类别
在队列的题目中,队头指针(front)和队尾指针(rear)有两种指示方法。
(1)队头指针 front
①指向队头元素
②指向队头元素元素的前一个位置
(2)队尾指针 rear
①指向队尾元素
②指向队尾元素的后一个位置
以下我的说明中队头指针均指的是队头元素,队尾指针均指的是队尾元素的后一个位置。
二、循环队列结构图
三、循环队列各种情况的判断
1. 空队列
front==rear,注意此时这俩指针不一定都指向初始位置0,也可能指向1或者2或者3等等。
2.队列初始化
front=rear=0.
3.队满条件
(rear+1)%maxSize==front.
如上图所示,如果还想往队列中放入元素的话,就会产生疑问(加入一个新元素之后,front就会和rear相等,此时无法判断队列是“空”还是“满”)。所以为了解决这一问题,我们可以少用一个元素,约定队头在队尾指针的下一个位置时作为队满的标志。
四、例子详解
首先将1,2 3,4,5这五个元素依次入队,此时front指向0的位置,rear指向5的位置。依次将1,2,3这三个元素出队,此时front指向3的位置,rear还是指向5的位置。再依次将6,7,8这第三个元素入队,front指向3的位置,rear指向0的位置。
五、出队、入队指针变化情况
结论一:当队列执行元素入队操作时,队尾指针(rear)向后移(rear++),队头指针(front)不变
结论二:当队列执行元素出队操作时,队头指针(front)向后移(front++),队尾指针(rear)不变