数据结构笔记-环形队列的数组实现
之前写过的数组对队列的简单实现会出现一些问题,即数组容器内已出队列的元素位置不能再次利用,使用数组实现环形队列可以解决这一问题:
;
思路:
- front 变量直接指向队列的第一个元素,初始值为0;
- rear 变量指向队列的最后一个元素的最后一个元素,初始值为0;
- 当队列满时, 满足 rear % (maxSize - 1) == front
- 当队列空时,满足 rear == front
- 队列中有效的数据个数为(rear + maxSize - front)% maxSize
;
代码实现:
环形队列的构造器:包括 front 和 rear 指针,数组容器 和 maxSize
public CircleQueueArr(int maxSize) {
this.maxSize = maxSize;
queue = new int[this.maxSize];
front = 0;//指向队列头部,下标位置为队列头部的第一个元素
rear = 0;//指向队列尾部,下标位置就是队列的最后一个元素的后一个元素
}
结合上面的思路实现判满方法:
<