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

代码与动画 DEQUE

双端队列.

使用双向链接,在队首和队尾分别插入或移除节点。

两端操作 O(1)双向链式实现演示容量 6

原理与执行逻辑

双端队列允许在队首与队尾分别插入、移除。当前链式实现让每个节点保存 next 与 prev,front 和 rear 分别指向两端。

执行步骤

  1. 队首插入时,将新节点连到原 front 前面,并更新双方链接。
  2. 队尾插入时,将新节点连到原 rear 后面,并更新双方链接。
  3. 从任一端移除时,将端点移到相邻节点,并清理向外的链接。
  4. 空队列首次插入时两端指向同一节点;删除最后一个节点后两端都为 null。

关键理解

相邻节点的 next 与 prev 必须相互对应。只操作端点可保持 O(1) 成本,处理单节点情况时需要同时更新两端。

简短示例

队列 [12, 25] 在队首加入 8 得到 [8, 12, 25],再从队尾取出 25,剩余 [8, 12]。

代码与执行动画

STEP 0 / 0
双端队列
const deque = { front: firstNode, rear: lastNode, size: 3 };
1 行 · 0 个片段标记
size = 3front = 12rear = 38
nextprevnextprev12front2538 rear
当前数据正在操作已访问 / 命中标记 / 指针
0

当前结构

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

操作当前结构

操作结果会用于下一次操作;重置结构恢复初始数据。

实现说明

双端队列的操作规则

front 和 rear 分别指向首尾。两条箭头分别表示 next 和 prev;移除最后一个节点后,首尾均为 null。

对应题目与扩展练习

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