初始队列为空,依次执行 enqueue(A)、enqueue(B)、enqueue(C)、dequeue()、enqueue(D)。此时调用 front() 应得到哪个元素?
查看提示
先逐步写出每次操作后的逻辑队列,不要按最近一次入队判断。
用 10 道选择题巩固队列的 FIFO 语义、循环下标、链队列边界、复杂度与工程选型。
02T0235~50 分钟更新于 2026-08-19Andy Liu基础~进阶draft辨析队列的先进先出语义、front 与 dequeue 的行为差异,推导循环队列的下标与长度,并检查链队列边界、复杂度和工程选型中的常见误区。
建议先阅读第 2.2 节队列,并确认采用正文的统一约定:front 指向队头元素,rear 指向下一次入队写入位置,循环队列使用空一格方案。题目中的物理槽位数均以 m 表示。
正文循环队列部分已有 3 道随堂复习题,分别检查有效容量、判满条件和满队列入队失败后的状态。本 Lab 不重复这些题目,而是进一步检查操作序列、公式应用、链式边界与实现取舍。
m、front、rear 的含义后再代入公式;queue-drill-001初始队列为空,依次执行 enqueue(A)、enqueue(B)、enqueue(C)、dequeue()、enqueue(D)。此时调用 front() 应得到哪个元素?
先逐步写出每次操作后的逻辑队列,不要按最近一次入队判断。
queue-drill-002队列依次入队 10、20 后,成功调用一次 front(out)。按照 Queue ADT 契约,下列哪项描述正确?
区分“查看队头”和“移除队头”两种操作。
queue-drill-003普通顺序队列的 rear 只向数组右侧推进。若多次出队后数组前部已有空位,但 rear 已到达数组末端,继续入队仍被拒绝。这种现象的根本原因是什么?
判断是“空间真的不足”,还是“当前下标规则到不了空位置”。
queue-drill-004循环队列物理槽位数 m = 6,rear = 5 且本次入队可以成功。元素写入 data[rear] 后执行 rear = (rear + 1) % m,新的 rear 是多少?
直接计算 (5 + 1) % 6,并注意合法下标范围是 0~5。
queue-drill-005采用正文统一约定的循环队列中,物理槽位数 m = 7,当前 front = 5、rear = 2。队列的逻辑元素个数是多少?
当 front > rear 时,逻辑区间会跨过数组末端。
queue-drill-006一个动态循环队列在空间不足时按固定倍数扩容,并按逻辑顺序搬移现有 n 个元素。下列复杂度描述哪项正确?
分别判断“发生扩容的那一次”和“一长串操作的平均成本”。
queue-drill-007无哨兵节点的链队列当前只有一个元素,且 head、tail 都指向该节点。成功出队并释放该节点后,正确状态应是什么?
检查 size == 0、head == nullptr、tail == nullptr 是否仍然等价。
queue-drill-008比较固定容量循环队列与维护尾指针的链队列,下列哪项说法最准确?
复杂度相同不代表容量模型、内存局部性和失败契约相同。
queue-drill-009某设备的数据缓冲区容量固定,初始化后禁止再次分配内存,要求入队和出队具有可预测的最坏延迟,并规定缓冲区满时拒绝新数据。最合适的核心结构是哪个?
优先匹配“不再分配”“固定容量”“最坏延迟可预测”三个条件。
queue-drill-010用输入栈 in 和输出栈 out 实现队列:入队压入 in;出队时若 out 为空,就把 in 中所有元素转移到 out。下列复杂度结论哪项正确?
追踪单个元素一生中进入和离开两个栈的总次数。
O(1)”为什么不等于每次入队最坏 O(1)?head 而不维护 tail,哪项基本操作可能退化为 O(n)?front 和 rear 的具体约定?