CSP-J 入门级 · CSP 2022 入门级第一轮 第 10 题

选择题 · 答案 D · 考点:栈(stack)、队列(queue)

← 整套速查表 CSP-J 入门级 全部真题

题目

以下对数据结构的表述不恰当的一项为:( )。

答案:D

考点

栈(stack) 讲解 →栈(stack) 真题汇总 →队列(queue) 讲解 →队列(queue) 真题汇总 →

解题思维

这题考栈和队列的本质区别。拿到题先别急着背定义,想想数据结构的核心操作:栈是后进先出,队列是先进先出。命题人最爱挖的坑就是‘绝对化’表述,比如‘无法实现’或‘完全相同’。看到D选项说‘无法用栈实现队列’,立刻警觉:两个栈配合一下,不就是把顺序反了再反回来吗?这就是解题突破口。

常见错误

很多学生看到‘栈’和‘队列’就以为它们水火不容,觉得一个进一个出,怎么转换都不可能。其实只要用两个栈,一个负责入(push),一个负责出(pop),把入栈的元素倒空到出栈,顺序就反转了,再倒回来,FIFO 就实现了。另一个坑是以为‘本质不同’就代表‘功能互斥’,忽略了算法设计里‘用不同结构模拟相同逻辑’的常见套路。

详细解析(节选)

考察知识点:栈与队列的基本性质及其相互模拟。栈是 LIFO(后进先出),队列是 FIFO(先进先出)。命题人喜欢在这些基础概念上设陷阱,尤其是用绝对化语言(如“无法实现”“本质不同”)来误导学生。本题 D 选项声称“栈与队列存在本质不同,无法用栈实现队列”,这正是典型的命题人挖坑方式——看似强调差异,实则否定可能性。但事实上,算法设计中常用两个栈模拟一个队列:一个栈负责入队(push 直接压入),另一个栈负责出队(pop 时若出栈为空,则将入栈所有元素弹出并压入出栈,再弹出出栈栈顶)。这样,元素顺序被反转两次,最终实现 FIFO。同理,两个队列也能模拟一个栈。因此,D 选项的“无法实现”明显错误,应选 D。A、B、C 均正确描述了栈、队列的性质及在 DFS、BFS 中的应用。本题虽短,但考察的是对数据结构灵活性的理解,而非死记硬背。

同考点真题

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