环形队列用取模实现索引回环,front指向队头元素、rear指向队尾后一位置;空判rear==front,满判(rear+1)%maxsize==front,元素数为(rear−front+maxsize)%maxsize。

用数组模拟固定容量的环形队列,核心是用取模运算让索引“绕回来”,同时用一个空位约定区分满与空——这是最常用、最稳妥的实战方案。
关键设计原则:front 与 rear 的含义必须明确
front 始终指向队头元素(即第一个待出队的数据),初始值为 0;
rear 始终指向队尾元素的下一个位置(不是最后一个元素本身),初始值也为 0。
这样设计后:
- 队列为空 ⇨ rear == front
- 队列为满 ⇨ (rear + 1) % maxSize == front(预留一位作判断依据)
- 当前有效元素个数 ⇨ (rear - front + maxSize) % maxSize
入队(add/enqueue)操作要点
每次添加前先判满;成功后 rear 向后移动,并自动回环到开头:
- 若
isFull()返回 true,直接拒绝插入,避免覆盖 - 否则执行:
arr[rear] = value; rear = (rear + 1) % maxSize; - 注意:rear 更新必须在赋值之后,且必须取模,否则越界
出队(get/dequeue)操作要点
每次取出前先判空;成功后 front 向后移动,同样需取模回环:
- 若
isEmpty()返回 true,抛异常或返回错误提示 - 否则执行:
value = arr[front]; front = (front + 1) % maxSize; - 取出的是
arr[front],不是arr[front-1]或其他偏移
遍历与调试时的常见陷阱
不能直接 for(i=0; i 不复杂但容易忽略
front 开始,循环 size() 次(front + i) % maxSize 计算










