[数据结构] 循环队列
front
:头指针rear
:尾指针maxsize
:数组长度
循环队列通常会让留空数组中的一位,区分队列为空和队列为满的状态。
入队移动rear
,出队移动front
。
形式1(默认):front
指向队头元素的前一位,而rear
指向队尾元素。
- 队列为空:
front == rear
- 队列为满:
front == (rear+1) % maxsize
- 元素个数:
(rear-front+maxsize) % maxsize
形式2:front
指向队头元素,rear
指向队尾元素的后一位。
- 队列为空:
front == rear
- 队列为满:
front == (rear+1) % maxsize
- 元素个数:
(rear-front+maxsize) % maxsize
形式3:front
指向队头元素,rear
指向队尾元素。
- 队列为空:
front == (rear+1) % maxsize
- 队列为满:
front == (rear+2) % maxsize
- 元素个数:
(rear-front+1+maxsize) % maxsize