以下对数据结构的表述不恰当的一项为:( )。
这题考栈和队列的本质区别。拿到题先别急着背定义,想想数据结构的核心操作:栈是后进先出,队列是先进先出。命题人最爱挖的坑就是‘绝对化’表述,比如‘无法实现’或‘完全相同’。看到D选项说‘无法用栈实现队列’,立刻警觉:两个栈配合一下,不就是把顺序反了再反回来吗?这就是解题突破口。
很多学生看到‘栈’和‘队列’就以为它们水火不容,觉得一个进一个出,怎么转换都不可能。其实只要用两个栈,一个负责入(push),一个负责出(pop),把入栈的元素倒空到出栈,顺序就反转了,再倒回来,FIFO 就实现了。另一个坑是以为‘本质不同’就代表‘功能互斥’,忽略了算法设计里‘用不同结构模拟相同逻辑’的常见套路。
考察知识点:栈与队列的基本性质及其相互模拟。栈是 LIFO(后进先出),队列是 FIFO(先进先出)。命题人喜欢在这些基础概念上设陷阱,尤其是用绝对化语言(如“无法实现”“本质不同”)来误导学生。本题 D 选项声称“栈与队列存在本质不同,无法用栈实现队列”,这正是典型的命题人挖坑方式——看似强调差异,实则否定可能性。但事实上,算法设计中常用两个栈模拟一个队列:一个栈负责入队(push 直接压入),另一个栈负责出队(pop 时若出栈为空,则将入栈所有元素弹出并压入出栈,再弹出出栈栈顶)。这样,元素顺序被反转两次,最终实现 FIFO。同理,两个队列也能模拟一个栈。因此,D 选项的“无法实现”明显错误,应选 D。A、B、C 均正确描述了栈、队列的性质及在 DFS、BFS 中的应用。本题虽短,但考察的是对数据结构灵活性的理解,而非死记硬背。