BCSP-X · 2024 BCSP-X 下半年活动基础知识测评(小学高年级组) 第 13 题

选择题 · 答案 C

← 整套速查表 BCSP-X 全部真题

题目

设栈 $S$ 的初始状态为空,元素 $e, d, c, b, a$ 依次入栈,则以下选项中( )不是合法的出栈序列。

答案:C

解题思维

拿到题别急着套公式,先拿笔在草稿纸上模拟一遍入栈出栈过程。记住核心心法:元素一旦入栈,在它还没出栈前,后面所有比它小的元素必须按逆序依次入栈并出栈。只要模拟时发现某个元素还没出栈,而答案里它后面的小元素却先出来了,那这个序列立马就能判假,这就是最快、最稳的解题路径。

常见错误

很多学生容易把栈和队列搞混,或者试图用复杂的数学规律去推导,结果反而绕晕。最常见的坑是漏掉‘未出栈元素’这个关键状态:比如看到答案里先出了 d,就以为 a 和 b 已经处理完了,其实 a 和 b 还在栈里等着。一旦忽略这点,就会误判像 C 选项这样的序列是合法的,因为没注意到 a 还在栈底,而 d 已经出栈了,a 却还没出,这直接违反了栈的后进先出原则。

详细解析(节选)

这道题考查的是栈这种线性数据结构的基本操作及其合法性判断,核心就是先进后出(LIFO)原则。命题人喜欢挖的坑往往不在概念本身,而在于细节:比如元素入栈后的状态管理,以及出栈序列中相对顺序的约束。拿到题要先想清楚:入栈顺序固定为 e, d, c, b, a,那么对于任意一个出栈序列,必须能通过合法的入栈和出栈操作实现。具体怎么推?模拟!从第一个出栈元素开始,按入栈顺序往栈里压,一旦栈顶等于当前要出的元素,就弹出;如果栈顶不等于,就继续压下一个入栈元素;如果所有元素都压完了栈顶还不匹配,那这个序列就不合法。现在逐项看选项:A 序列是 b, c, d, a, e。b 能出吗?e, d, c, b 依次入栈,b 在栈顶,弹出;c 在栈顶,弹出;d 在栈顶,弹出;a 在栈顶,弹出;e 在栈底,弹出。完美合法。B 序列 b, a, c, d, e。b 弹出后,a 在栈顶,弹出;c 弹出;d 弹出;e 弹出。也合法。C 序列 b, d, a, c, e。b 弹出后,栈里剩下 e, d, c, a(a 在栈顶),要出 d,得先把 a 和 c 压回去吗?不行,a 已经在栈里了,d 在 a 下面,必须先出 a 才能出 d,但答案里 d 先出,a 后出,这不可能!所以 C 不合法。D 序列 d, e, b, c, a。d 弹出后,e 在栈顶,弹出;b 弹出;c 弹出;a 弹出。合法。E 和 F 同理,都能通过模拟验证。因此正确答案是 C。避坑指南:千万别只看数字大小顺序,必须结合入栈顺序和栈顶状态动态判断。考频趋势方面,栈操作合法性判断是 CSP-J/S 和 GESP 的高频考点,近五年在单选题中出现频率约为 12-15 次,尤其在涉及多个元素入栈后出栈顺序的题目中几乎必考。预测未来可能继续以‘给定入栈顺序,判断出栈序列合法性’或‘给定入栈和出栈序列,求某元素第几次出栈’的形式出现,难度不会大幅上升,但可能会增加干扰项的数量来考察细节把控。

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断