学习首页/数据结构/循环队列交互演示 · JavaScript

代码与动画 CIRCULAR QUEUE · FIFO

循环队列.

使用 head、size 和环形槽位实现先进先出。

入队 / 出队 O(1)固定容量 6tail = (head + size) % 6

原理与执行逻辑

循环队列用固定槽位保存先进先出的元素,通过取模让下标绕回开头。head 标记队首,size 记录有效元素数量。

执行步骤

  1. 入队前检查 size 是否等于容量。
  2. 计算 tail = (head + size) % capacity,写入新值并增加 size。
  3. 出队时读取 head,清空槽位,再令 head = (head + 1) % capacity。
  4. 减少 size;size 为 0 时队列为空。

关键理解

head 与 size 共同确定有效区间,可以区分队满和队空。下标绕回只复用已释放槽位,元素的先后顺序仍然保持。

简短示例

容量 4、head = 3、size = 2 时,有效元素位于槽位 3、0;下一次入队写入 (3 + 2) % 4 = 1。

代码与执行动画

STEP 0 / 0
循环队列
const queue = { slots: [12, 25, 38, null, null, null], head: 0, size: 3 };
1 行 · 0 个片段标记
size = 3 / 6head = 0tail = 3
120 head251382∅3 tail∅4∅5
当前数据正在操作已访问 / 命中标记 / 指针
输出 / 辅助状态
队首 → 12 → 25 → 38 → 队尾
0

当前结构

选择操作,观察对应代码和状态变化。

操作当前结构

下一次操作使用上次完成后的数据。重置结构恢复初始示例。

值和键:1 至 99;位置从 0 开始。

实现说明

循环队列的操作规则

head 指向队首,tail 指向下次写入位置。槽位通过取模复用;size 区分队满与队空。

对应题目与扩展练习

观察执行过程后,按题目约束调整输入、返回值与实现。链接打开官方题目页面。