学习首页/数据结构/栈交互演示 · JavaScript

代码与动画 STACK · LIFO

栈.

在栈顶压入和弹出元素,遵循后进先出。

push / pop O(1)(链式实现)peek O(1)演示容量 6

原理与执行逻辑

栈仅在顶端访问元素,最后加入的元素最先取出。当前实现使用链式节点,top 指向最新压入的节点。

执行步骤

  1. 入栈时创建节点,令它的 next 指向原 top。
  2. 将 top 改为新节点。
  3. 弹栈时保存 top 的值,再令 top 指向它的 next。
  4. 查看栈顶只读值;空栈弹出或查看时报告错误。

关键理解

push 与 pop 只修改栈顶,保持后进先出。弹栈前必须检查空栈,且返回值应在移动 top 前保存。

简短示例

依次压入 12、25、38 后,连续弹出得到 38、25、12。

代码与执行动画

STEP 0 / 0
栈
let top = { value: 38, next: { value: 25, next: { value: 12, next: null } } };
1 行 · 0 个片段标记
size = 3LIFO
12bottom2538top
当前数据正在操作已访问 / 命中标记 / 指针
0

当前结构

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

操作当前结构

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

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

实现说明

栈的操作规则

代码采用链式栈,top 指向最后压入的节点。弹栈返回顶端值;空栈操作给出错误状态。

对应题目与扩展练习

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