模拟卷 数据结构 队列 选择题
第 1 题

若循环队列以数组 Q[0..m-1] 为其存储结构,变量 rear 表示循环队列中的队尾元素的实际位置,其移动按 rear=(rear+1) MOD m 进行,变量 length 表示当前循环队列中的元素个数,则循环队列的队首元素的实际位置是( )。

A. rear-length B. (rear-length+m) MOD m C. (1+rear-m-length) MOD m D. (rear-length-1) MOD m

队列

[tag_link]

正确答案:C

循环队列中,队尾元素的位置由 `rear` 给出,队列当前元素个数为 `length`。 设��首元素的位置为 `front`,由于队列元素从 `front` 连续存储到 `rear`(考虑循环),因此 `rear` 与 `front` 满足关系:

解出 front,得:

选项 C 的表达式为 (1 + rear - m - length) MOD m,可化简为:

在模 运算下,减去 不改变余数,因此该表达式等价于:

与推导结果一致。

通过实例验证:设

,则队首应为位置 9。

计算选项 C:

结果正确; 而其他选项均不满足。 因此,循环队列的队首元素实际位置为选项 C。