GESP 六级 · GESP 202606 C++ 六级 第 4 题

选择题 · 答案 A

← 整套速查表 GESP 六级 全部真题

题目

某文本编辑器把用户输入的字符依次压入栈 S。用户依次输入 X、Y、Z、W 后,连续执行两次撤销操作。每次撤销都会弹出栈顶一个字符。此时栈从栈底到栈顶的内容是( )。

答案:A

解题思维

栈是后进先出(LIFO)结构。入栈push,出栈pop。常用于括号匹配、表达式求值、函数调用栈。

常见错误

注意栈空时执行pop操作会导致下溢(underflow)。C++ STL stack 的 top() 在栈空时行为未定义。

详细解析(节选)

【考点】栈(Stack)|后进先出(LIFO)|撤销操作(弹出)

考纲定位:GESP 六级数据结构模块的栈基础题,命题人卡住的是对"后进先出"动态变化的理解不足——多数考生只会背"栈顶是最后入的",却搞不清多次弹出后栈底到栈顶的真实顺序。

解题思维:输入 X、Y、Z、W 依次压栈,栈顶为 W;撤销即弹出栈顶,第一次撤销弹出 W,栈顶变为 Z;第二次撤销再弹出 Z,栈顶变为 Y。栈从底到顶只剩 X、Y。通法:栈的所有操作都基于 LIFO,撤销/弹出操作总是作用于当前栈顶,与输入顺序无关,只与当前栈顶有关。这类题的关键是动态追踪栈顶变化,而非静态记忆输入顺序。

陷阱拆解:B 项把被弹出的 Z 保留,混淆了"撤销"与"删除";C 项误以为撤销两次后保留 Y 和 Z,没意识到第二次撤销后 Y 成为新栈顶;D 项保留 X 和 Z,错误理解栈底元素不受撤销影响。命题人利用对栈顶/栈底概念混淆、对撤销操作次数理解错误、以及对栈的 LIFO 特性机械记忆而不理解动态变化。如果你只背结论"撤销两次后保留前两个",就会掉进 B 或 D 的陷阱。

反命题思维:若改为"输入 X、Y、Z、W 后执行三次撤销",答案应为 X;若改为"执行一次撤销",答案为 X、Y、Z。命题人想考的是对栈操作的理解深度,而不仅仅是机械执行步骤。刷到类似题时,先问自己"命题人想考我什么",是考栈的 LIFO 特性,还是考撤销操作的次数,还是考栈底与栈顶的区分。

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