Question 13

栈的出栈序列

给定空栈,依次入栈 1 2 3 4 5 6,下面哪种出栈顺序不可能出现?

单项选择2难度 中等

正确答案

D. 1 3 5 2 4 6

一句话考点

判断栈序列是否合法的关键是:当前要弹出的元素必须位于栈顶。

模拟

Prompt

题目与选项

给定空栈,依次入栈 1 2 3 4 5 6,下面哪种出栈顺序不可能出现?

A. 6 5 4 3 2 1

B. 1 6 5 4 3 2

C. 2 4 6 5 3 1

D. 1 3 5 2 4 6

Quick Check

做题抓手

先判断题型

先定位知识点,再决定是公式套用、手推样例还是结构重建。

再核对边界

第一轮很爱在闭区间、下标偏移、递归终止条件和布尔返回值上设陷阱。

最后看输出层次

尤其是阅读程序题,要分清函数返回值、变量值和最终打印值是不是同一件事。

Explanation

详细讲解

  1. Step 1

    A 是完全压满后再全部弹出,显然合法。B 可以先压 1 弹 1,再压到 6 后依次弹出 6 5 4 3 2,也合法。

  2. Step 2

    C 也能通过按需入栈模拟出来:先弹 2,再弹 4,再压到 6,最后依次弹 6、5、3、1。

  3. Step 3

    D 的问题在于:先弹 1、再弹 3、再弹 5 之后,栈顶会是 4,可下一个目标却是 2。由于 2 被 4 压住,不可能直接弹出,所以 D 不合法。

Pitfalls

易错点

  • 只凭感觉看顺不顺眼,没有真正按“入栈/出栈”过程模拟。
  • 忘记栈顶约束,觉得只要元素顺序差不多就行。

Extend

拓展补充

  • 这类题最稳的做法是手动画栈,目标弹出谁,就持续入栈直到它在栈顶为止。

返回总览

回到整套试卷

返回题目总览页,继续从目录、知识图谱或其他分区进入。

所属分区

返回 单项选择

回到首页对应分区,继续顺序刷题或查看同类知识点。

上一题

第 12 题

前中序推后序

下一题

第 14 题

相邻限制的排列