栈的基本操作包括入栈(push)和出栈(pop)。
栈是后进先出(LIFO)结构。入栈push,出栈pop。常用于括号匹配、表达式求值、函数调用栈。
注意栈空时执行pop操作会导致下溢(underflow)。C++ STL stack 的 top() 在栈空时行为未定义。
【考点】栈的基本操作|数据结构定义|命题逻辑
本题位于《GESP 六级 C++ 大纲》“数据结构与算法”模块的栈专题,是六级笔试中必考的核心概念。命题人放这道题不是为了考操作实现,而是卡住“基础定义模糊”的弱点——很多考生能写 push/pop 代码,却说不清“基本操作”是否包含 isEmpty、peek 等辅助函数。
看到“基本操作包括 push/pop",先锁定定义域:栈的本质是 LIFO 队列,其最小完备操作集必然包含入栈和出栈。命题逻辑上,“包括”意味着列举不完全,而非“仅包含”。解题通法是:遇到此类陈述,先确认核心操作是否已覆盖,再判断是否有隐含的“完备性”陷阱。
选项 B 是命题人精心设计的“绝对化”陷阱——它利用考生对“基本”一词的过度解读,将“基本操作”偷换为“全部操作”。如果你只背结论、不理解“包括”是列举而非穷举,就会误判为错误。最阴险的细节在于题目未提“仅”字,却让你在“包括”和“仅包括”之间做选择。
把“包括”改成“仅包括”,答案立刻反转;若加入 peek 或 isEmpty,命题人仍会判定为正确——因为“基本操作”定义本就允许列举不完全。刷到类似题时,先问自己“命题人想考我什么”,再决定是选正确还是错误。