第 3 题
若用一个大小为 6 的数组来实现循环队列,且当前 rear 和 front 的值分别为 0 和 3,其移动按数组下标增大的方向进行(当下标不等于 m-1 时)。当从队列中删除一个元素,再加入两个元素后,rear 和 front 的值分别为( )。
A. 1 和 5 B. 2 和 4 C. 4 和 2 D. 5 和 1
[tag_link]
正确答案:B
首先,循环队列使用大小为 6 的数组,下标从 0 到 5。 初始时 front=3,rear=0,表示队列中有元素。 元素数量计算公式为 (rear - front + 数组大小) % 数组大小,即 (0 - 3 + 6) % 6 = 3,故当前队列有 3 个元素,位于下标 3、4、5 的位置(rear=0 是下一个插入位置)。
接下来执行操作:先删除一个元素,再加入两个元素。 删除元素时,front 向数组下标增大方向移动。 当前 front=3,不是数组末尾下标 5,因此删除后 front 增加 1,变为 4。 此时 rear 不变,仍为 0。 然后加入第一个元素:rear 向数组下标增大方向移动,从 0 增加 1 到 1。 加入第二个元素:rear 从 1 增加 1 到 2。
最终,rear=2,front=4。 对应选项 B(2 和 4)。