给定一个空栈,支持入栈和出栈操作。若入栈操作的元素依次是 $1\ 2\ 3\ 4\ 5\ 6$,其中 $1$ 最先入栈,$6$ 最后入栈,下面哪种出栈顺序是不可能的?( )
这题考栈的后进先出(LIFO)特性。拿到选项别急着猜,直接模拟入栈过程:遇到要出的数字就压栈,栈顶若正好是它立刻弹出,否则栈里若有比它大的数,那它绝不可能先出来,这就是破题关键。
很多学生看到 D 选项 1 3 5 2 4 6 觉得挺顺,就忽略了 2 和 4 在栈里的相对位置。最容易栽跟头的就是认为只要数字没出过就能随便出,忘了栈里压着 4 时,2 被死死压在底下,必须 4 先走 2 才能出。还有人会误以为只要最后能排好就行,不看中间过程,导致把 C 也选错。
这题考查栈(Stack)的核心特性:后进先出(LIFO),即最后入栈的元素最先出栈。给定入栈顺序固定为 1→2→3→4→5→6,判断一个出栈序列是否合法,本质是看能否通过合理的“入栈”和“出栈”操作得到该序列。
命题人特别喜欢考“中间穿插”的情况。比如选项 B 和 C 都是先出几个小的,再出一大波,看似复杂,实则只要模拟就能秒杀。真正的坑在选项 D:它乍一看数字递增,很顺眼,但中间突然插了个 2,又接了个 4,这种“回头”操作最容易让人放松警惕,以为只要数字没出过就能随时出,从而误判。