Skip to content

2010年 408 数据结构 第 2 题

数据结构2010年选择题2分

题目

某队列允许在其两端进行入队操作,但仅允许在一端进行出队操作,若元素 a, b, c, d, e 依次入此队列后再进行出队操作,则不可能得到的出队序列是( )。

错因

A

误以为 b 先于 a 出队不可能,因为 a 比 b 先入队。但双端队列允许 b 从前端入队、a 从后端入队,最终队列为 [b, a, c, d, e],出队顺序恰好是 b, a, c, d, e。A 是可行的。

B

a→后端,b→前端,c→后端,d→前端,e→后端,得到队列 [d, b, a, c, e],出队顺序正是 d, b, a, c, e。有人因为 d 在 a、b 之后入队就认为 d 不能排第一,忽略了前端入队可以让 d 插到最前面。B 可行。

D

a→后端,b→前端,c→前端,e→前端,d→后端,得到队列 [e, c, b, a, d](前端三元素逆序为 e,c,b,后端两元素顺序为 a,d),出队 e, c, b, a, d。D 可行。误认为 e 先于 d 出队不可能的人忽视了 e 可从前端插到最前。

总解析

输出受限双端队列:a, b, c, d, e 依次按顺序各选择从前端后端入队,所有元素入完后从唯一的出队端(前端)依次出队。

最终队列排列规律:

  • 前端入队的元素,按逆入队顺序排在队列最前面
  • 后端入队的元素,按正入队顺序排在后端部分

对 C(d, b, c, a, e):需要最终队列为 [d, b, c, a, e]。

  • 若前端部分以 d 开头、b 紧随,那么前端入队的逆序为 d, b,即入队顺序为 b(2nd), d(4th)——满足单调递增 ✓;
  • 后端部分需要是 [c, a, e],即后端入队的正顺序为 c(3rd), a(1st), e(5th)——但 a 在 c 之前入队,后端正顺序应是 a 排在 c 前面,无法得到 [c, a, e] ✗。

尝试其他所有前后端分配方案,均无法构造出 [d, b, c, a, e] 的排列。

最终答案是 C

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数