代码与动画 CIRCULAR QUEUE · FIFO
循环队列.
使用 head、size 和环形槽位实现先进先出。
入队 / 出队 O(1)固定容量 6tail = (head + size) % 6
原理与执行逻辑
循环队列用固定槽位保存先进先出的元素,通过取模让下标绕回开头。head 标记队首,size 记录有效元素数量。
执行步骤
- 入队前检查 size 是否等于容量。
- 计算 tail = (head + size) % capacity,写入新值并增加 size。
- 出队时读取 head,清空槽位,再令 head = (head + 1) % capacity。
- 减少 size;size 为 0 时队列为空。
关键理解
head 与 size 共同确定有效区间,可以区分队满和队空。下标绕回只复用已释放槽位,元素的先后顺序仍然保持。
简短示例
容量 4、head = 3、size = 2 时,有效元素位于槽位 3、0;下一次入队写入 (3 + 2) % 4 = 1。
代码与执行动画
STEP 0 / 0const queue = { slots: [12, 25, 38, null, null, null], head: 0, size: 3 };size = 3 / 6head = 0tail = 3
当前数据正在操作已访问 / 命中标记 / 指针
输出 / 辅助状态
队首 → 12 → 25 → 38 → 队尾
0
当前结构
选择操作,观察对应代码和状态变化。
操作当前结构
下一次操作使用上次完成后的数据。重置结构恢复初始示例。
循环队列的操作规则
head 指向队首,tail 指向下次写入位置。槽位通过取模复用;size 区分队满与队空。
对应题目与扩展练习
观察执行过程后,按题目约束调整输入、返回值与实现。链接打开官方题目页面。
- 对应题目622. 设计循环队列打开题目
直接练习循环槽位、队满与队空判断。