「栈(stack)」在信息学竞赛真题中出现 47 次,覆盖 NOIP 提高组 初赛、NOIP 普及组 初赛、CSP 入门级、CSP 提高级、GESP 六级、GESP 七级、GESP 八级。下面按考试级别列出每一道题的题号、答案与一句话解题思路,可以按考点横向刷,也可以顺着套卷纵向练。
怎么用这一页:先看下面的「命中题目速查」,挑 2~3 道做;做完对照每题的「常见错误」检查自己是不是踩了同一个坑;同一个考点连续错两次,就去知识点精讲把规则补齐再回来刷。
-
第 7 题
答案:D
· 选择题 · NOIP 2007 提高组初赛试题
这题本质就是汉诺塔规则在栈结构上的模拟。拿到操作串别急着算,先在草稿纸上画个栈,按'进'把盘子编号压进去,按'出'把栈顶编号弹出来记在C柱。记住C柱是从下往上读,所以出栈顺序要反过来写,这样就能稳稳锁定答案。
看完整解析 →
-
第 6 题
答案:D
· 选择题 · NOIP 2008 提高组初赛试题
这题就是让你模拟入栈出栈过程,关键是盯着栈里同时存在的元素个数,而不是总入栈次数,找到过程中栈最‘鼓’的那一刻,那个数字就是答案。
看完整解析 →
-
第 8 题
答案:E
· 选择题 · NOIP 2008 提高组初赛试题
这题考递归调用的底层实现。拿到题先想:函数一层层嵌套,最里层的必须先处理完,外面的才能接着往下走。这种“后进先出”的次序,直接指向一种特定的数据结构。
看完整解析 →
-
第 6 题
答案:B
· 选择题 · NOIP 2009 提高组初赛试题
这题就是考中缀转后缀(逆波兰)的栈操作。拿到题别慌,记住口诀:数字直接写,左括号进栈,右括号把栈里能弹的都弹出来,遇到运算符就先把栈里比它优先级高的弹掉,再把自己压进去。最后把栈里剩的再清一遍,答案自然就出来了。
看完整解析 →
-
第 11 题
答案:ACD
· 选择题 · NOIP 2010 提高组初赛试题
拿到题先锁定栈底状态:R3 一出栈,R1 和 R2 就被压在栈底,R2 永远在 R1 上面。后面不管怎么折腾,R2 不可能跑到 R1 后面去,所以第 5 个出栈的绝对不可能是 R2,直接排除 B,剩下 A、C、D 逐个验…
看完整解析 →
-
第 13 题
答案:AD
· 选择题 · NOIP 2012 提高组初赛试题
这题考栈的进出栈顺序合法性。拿到题先别急着排,盯着当前栈里a,b,c的位置——它们必须按这个顺序留在栈里,d既然已经出去了,那它肯定是在a,b,c全部或至少部分入栈之后才离开的。
看完整解析 →
-
第 28 题
答案:return(k%c)+1s[n]=q[tail]q[head]q[tail]next(head)
· 阅读程序 · NOIP 2012 提高组初赛试题
这题考的是数据结构组合与循环队列模拟。拿到题先想:栈底存数据,栈顶c个存壳,用方向变量控制壳的翻转。push时壳空就进栈,壳满就进队列;pop同理;reverse只改方向。
看完整解析 →
-
第 27 题
答案:n0stack2[top2]=stack1[top1]stack1[top1]=stack2[top2]top1-1
· 阅读程序 · NOIP 2014 提高组初赛试题
这题核心就是双栈模拟数组的随机访问。拿到题先想:数组下标怎么在两个栈之间移动?栈顶指针top1初始指向n,top2初始为0。当目标下标i小于top1 1时,需要把栈顶元素移到stack2;反之则把stack2栈顶移回st…
看完整解析 →
-
第 8 题
答案:B
· 选择题 · NOIP 2015 提高组初赛试题
这题考完全二叉树高度与结点数的关系。拿到题先想高度为h的树最多能装多少叶子,用2的幂次去夹逼61这个数,找到它落在哪一层区间里。
看完整解析 →
-
第 6 题
答案:B
· 选择题 · NOIP 2016 提高组初赛试题
拿到这种带括号的式子,别急着套公式,脑子里先画个树:括号里先算,再乘,最后减。按这个顺序把操作数挪到运算符后面,就能一眼看出后缀形式。
看完整解析 →
-
第 8 题
答案:B
· 选择题 · NOIP 2016 提高组初赛试题
拿到题先想:边数固定要顶点最少,得让边堆在一个连通分量里——把 28 条边凑成完全图 K₈,再补一个孤立点保证非连通,总和就是答案。
看完整解析 →
-
第 7 题
答案:B
· 选择题 · NOIP 2017 提高组初赛试题
这题就是考中缀变后缀,不用记死规则,你脑子里想运算顺序:先算括号里的 b+c,结果再和 a 乘,最后再乘 d。把每一步运算符号往后挪,自然就得到答案了。
看完整解析 →
-
第 6 题
答案:B
· 选择题 · NOIP 2018 提高组初赛试题
这题考前缀表达式(波兰式)。拿到题先别急着背规则,直接看运算顺序:谁先算谁就往前放。这题里乘法比减法优先级高,所以先把两个乘法项各自打包成前缀,再把减法放在最前面,最后把打包好的两个乘法串连起来,就能直接写出答案了。
看完整解析 →
-
第 11 题
答案:A
· 选择题 · CSP 2020 入门级第一轮
这题一眼看上去就是考数据结构识别。别急着背定义,先盯着图看操作方向:如果只有一端能进能出,那就是栈;两头进出那是队列。记住‘羽毛球筒’那个比喻,后塞进去的先拿出来,LIFO 是核心。
看完整解析 →
-
第 5 题
答案:D
· 选择题 · CSP 2021 入门级第一轮
拿到这种栈的出栈序列题,别急着硬算,先想核心约束:出栈序列里,若出现'小数字在小数字后面'(比如c在a后面),那c和a之间所有还没出栈的数(b)必须已经出栈了。这道题就是看D选项里c、d、a的顺序是否违背了这个铁律。
看完整解析 →
-
第 9 题
答案:B
· 选择题 · CSP 2021 入门级第一轮
中缀转后缀的核心口诀是:操作数照抄,左括号压栈,右括号弹栈,遇到运算符看优先级——比栈顶高就压栈,低或相等就弹栈。遇到右括号才真正弹出括号内的内容。按这个流程走一遍,就能稳稳锁定答案。
看完整解析 →
-
第 19 题
答案:DCB
· 完善程序 · CSP 2021 入门级第一轮
这题考模拟+约瑟夫问题变种。核心是维护‘当前报数p’和‘已出局数c’,循环直到只剩一人。填①时别盯着i,要盯c;填②③④时注意p=1才出局、出局后c++、p要翻转;填⑤别漏取模。
看完整解析 →
-
第 2 题
答案:C
· 选择题 · CSP 2022 入门级第一轮
入栈顺序是6,5,4,3,2,1,出栈序列里数字越大越先出来。看到3先出,说明6,5,4,3都进栈了;紧接着4出,说明4是栈顶;再想6出,得先让4和5出完——可选项C里6直接跟在4后面,这明显违背栈的后进先出,一眼就能看…
看完整解析 →
-
第 5 题
答案:B
· 选择题 · CSP 2022 入门级第一轮
拿到题别急着列步骤,先抓住核心逻辑:进栈顺序死板(e1到e6),但出栈时机灵活。你的任务就是模拟这个‘进 出 进 出’的过程,盯着栈里同时存在的元素数量,那个峰值就是答案。关键是理解队列出队顺序其实是在告诉你‘谁必须最先…
看完整解析 →
-
第 6 题
答案:B
· 选择题 · CSP 2022 入门级第一轮
这道题考的是前缀表达式(波兰式)的转换,核心就是记住‘从右向左看,优先级高的先出’,遇到括号就按相反顺序处理。拿到题先别急着写,脑子里把原式拆开:先算括号里的减法,再乘,最后加。把操作数按逆序排好,再把运算符按优先级从后…
看完整解析 →
-
第 10 题
答案:D
· 选择题 · CSP 2022 入门级第一轮
这题考栈和队列的本质区别。拿到题先别急着背定义,想想数据结构的核心操作:栈是后进先出,队列是先进先出。命题人最爱挖的坑就是‘绝对化’表述,比如‘无法实现’或‘完全相同’。看到D选项说‘无法用栈实现队列’,立刻警觉:两个栈…
看完整解析 →
-
第 8 题
答案:A
· 选择题 · CSP 2023 入门级第一轮
这题核心就是把后缀表达式转回中缀,脑子里先画个栈:数字直接压栈,遇到运算符就弹两个数算完再压回去。关键是减法和除法要倒着弹,先弹的是右操作数,别搞反了。
看完整解析 →
-
第 13 题
答案:D
· 选择题 · CSP 2024 入门级第一轮
这题考栈的后进先出(LIFO)特性。拿到选项别急着猜,直接模拟入栈过程:遇到要出的数字就压栈,栈顶若正好是它立刻弹出,否则栈里若有比它大的数,那它绝不可能先出来,这就是破题关键。
看完整解析 →
-
第 15 题
答案:A
· 选择题 · CSP 2025 入门级第一轮
这题考查栈与队列的模拟操作。拿到题先别急着写代码,把输入序列和规则对应起来:奇数直接入栈,偶数看栈非空就弹栈顶入队,栈空则跳过。按顺序一步步走,栈的变化和出队顺序自然就出来了。
看完整解析 →
-
第 4 题
答案:C
· 选择题 · CSP 2026 入门级第一轮
出入栈序列可以看成"堆栈筛":某个数要先出栈,就必须先把它压进去;一旦它出栈,比它晚压入的数只能压在它上面。
看完整解析 →