第 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。