Java数据结构——环形队列
介绍
对之前的数组模拟队列 的优化,充分利用数组。(将数组看作一个环形的圈)
通过取模运算实现
分析
1.尾索引rear的下一个为头索引front时表示队列满,即将队列容量maxSize空出一个作为约定这个再做再做判断队列满的时候需要注意
(rear + 1)% maxSize == front
2.队列为空时 rear == front
3.示意图:
思路分析:
1.front变量的含义做一个调整:front指向队列的第一个元素,也就是说arr[front]就是队列的第一个元素
front初值值=0
2.rear变量的含义做一个调整:rear指向队列的最后一个元素的后一个位置,因为希望空出一个空间作为约定
rear初始值=0
3.当队列满时,条件是(rear +1)%maxSize = front 或者 rear+1=maxSize
4.当队列为空时,条件是rear = front
5.队列中有效数据个数是(rear +maxSize -front)%maxSize
如此,可在原来的队列上修改得到一个环形队列