数组模拟环形队列
对前面的数组模拟队列的优化,充分利用数组
因此将数组看做一个环形的
(通过取模的方式来实现)
思路
1>首先对front变量的含义做一个调整:front初始值为0,就是指向队列的第一个元素,也就是arr[front]就是第一个元素
2>rear的含义做一个调整:rear初始值为0,就是指向队列的最后一个元素的后一个位置,因为希望空出一个空间作为约定
//预留约定,画一个图尝试取模就懂了
3>当队列满时,条件是(rear+1)%maxSize = front
4>当队列空时,条件是rear = front
5>当这样分析,队列中的元素个数为
(rear+maxSize-front)% maxSize
6>我们就可以做一个环形队列
分析说明
尾索引的下一个为头索引时表示队列满,即将队列容量空出一个作为约定,这个在做判断队列满时需要注意
代码实现
//创建数组模拟队列编写一个类
南故笙烟:队列的应用场景和介绍及数组模拟队列zhuanlan.zhihu.com