NOIP 普及组初赛 · NOIP 2010 普及组初赛试题 第 15 题

选择题 · 答案 B · 考点:栈(stack)、线性表

← 整套速查表 NOIP 普及组初赛 全部真题

题目

元素 $R_1,R_2,R_3,R_4,R_5$ 入栈的顺序为 $R_1,R_2,R_3,R_4,R_5$。如果第 $1$ 个出栈的是 $R_3$,那么第 $5$ 个出栈的不可能是( )。

答案:B

考点

栈(stack) 讲解 →栈(stack) 真题汇总 →线性表

解题思维

这题考栈的后进先出特性,拿到题先模拟R3出栈那一刻的栈状态,看R2被压在哪一层,再往后推R4、R5入栈后的顺序,就能一眼看出谁不可能排在最后。

常见错误

最容易错选A或C,把R2当成还没入栈或以为它会被R4、R5压住,其实R2早在R3出栈时就在栈里了,且此时R2在R1上面,后面进来的R4、R5只能压在R2上面,R2要么在R4、R5之前出,要么被它们压住,绝不可能等到第5个才出。

详细解析(节选)

这道题考查的是栈(Stack)的后进先出(LIFO)特性,以及元素入栈、出栈顺序的模拟推理。命题人喜欢用这种“给定部分出栈顺序,推断剩余可能性”的题型,挖坑点往往在于考生对栈内元素的相对位置判断失误,或者误以为后面入栈的元素会把前面的元素彻底“埋”住,导致顺序完全打乱,其实栈里元素的相对顺序是固定的,只能被压在更晚入栈的元素上面。拿到题,第一步是还原R3第一个出栈时的场景:R1、R2、R3依次入栈,栈变成[R1, R2, R3],此时R3出栈,栈里剩下[R1, R2],R2在栈顶,R1在栈底。接下来R4、R5还没入栈,它们只能按顺序入栈,每次入栈都会压在R2上面。所以无论怎么操作,R2要么在R4、R5入栈之前被弹出,要么被R4、R5压在下面,但绝不可能等到所有元素都出栈后才弹出。换句话说,R2最多只能排在第4位(如果R4、R5都先入栈再一起出),或者更早,但永远不可能是第5位。再看选项:A选项R1,它是栈底,只有在R2、R3、R4、R5都出栈后才能出,所以R1完全可能排在第5位;C选项R4,它可以在R2出栈后再入栈并立即出栈,也可能被R5压在下面,所以R4排在第5位也是可能的;D选项R5,同理,它最后入栈,可能排在第4或第5位;唯独B选项R2,从刚才的模拟就能看出它不可能排在第5位。因此正确答案是B。考频方面,栈在题库里是高频考点,共考过89题,覆盖8个考试级别,特别是2024年考了25题,2025年15题,2026年9题,说明栈的出栈顺序推理是近年来的重中之重。未来趋势上,随着数据结构的考查越来越灵活,这类需要动手模拟栈操作、判断元素相对位置的题目只会更多,命题人可能会把栈和队列、链表混合考,或者给出更复杂的入栈序列让你判断某个元素是否可能出现在某个位置。暂无足够依据预测具体年份的题型变化,但可以肯定的是,对栈LIFO特性的理解必须做到“肌肉记忆”,看到题先画个栈图,标出当前栈顶和栈底,再往后推,这才是拿分的关键。

同考点真题

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