Skip to content

2020年 408 数据结构 第 2 题

数据结构2020年选择题2分

题目

对空栈 进行 Push 和 Pop 操作,入栈序列为 ,经过 Push, Push, Pop, Push, Pop, Push, Push, Pop 操作后,得到的出栈序列是( )。

错因

A

第二次 Pop 时输出了 、第三次 Pop 时输出了 。错在没意识到第二次 Push 进的是 (栈顶是 不是 ),把 Push 序号和 Pop 序号对错了——这种错误常见于"懒得画栈状态"。

B

第二次 Pop 错输出 。原因和 A 类似:忽略了第一次 Pop 之后栈里仍剩 ,再次 Push 进的是 ,所以第二次 Pop 应输出 而不是 。把 Pop 当成"清空栈"是典型误区。

C

正确处理了前两次 Pop(输出 ),但最后一次 Pop 错输出了 。错在没数清入栈序列:题目共 5 次 Push( 全部入过栈),最后栈顶是 ,应输出 。一旦操作步数多就容易丢入栈进度。

总解析

思路:按操作序列逐步模拟栈的状态。Push 把入栈序列里的下一个字母入栈,Pop 弹出栈顶并记入输出。

逐步模拟(共 5 次 Push、3 次 Pop,正好与入栈序列 匹配):

操作入栈/出栈元素操作后栈(栈底→栈顶)输出
1Push
2Push
3Pop
4Push
5Pop
6Push
7Push
8Pop

关键观察

  • 第二次 Pop 时栈顶是 (不是 在栈底)。
  • 第三次 Pop 时栈顶是 都没出来)。

输出序列:

最终答案是 D(b, c, e)

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数