题目
9.若用一个大小为 6 的数组来实现循环队列,且当前 rear 和 front 的值分别为 0 和 3,当从队列中删除一个元素,再加入两个元素后,rear 和 front 的值分别为多少?( )A. 1 和 5B. 2 和 4C. 4 和 2D. 5 和 1
9.若用一个大小为 6 的数组来实现循环队列,且当前 rear 和 front 的值分别为 0 和 3,当从队列中删除一个元素,再加入两个元素后,rear 和 front 的值分别为多少?( )
A. 1 和 5
B. 2 和 4
C. 4 和 2
D. 5 和 1
题目解答
答案
B. 2 和 4
解析
步骤 1:理解循环队列的特性
循环队列是解决假溢出的问题,通常把一维数组看成首尾相接。在循环意义下的加 1 运算通常用求模运算来实现。所以入队和出队时的操作分别为:rear=(rear+1)%m,front=(front+1)%m,其中 m 是数组的大小。
步骤 2:计算删除一个元素后的 front 和 rear
当前 rear 和 front 的值分别为 0 和 3,删除一个元素后,front 的值变为 (3+1)%6=4,rear 的值不变,仍为 0。
步骤 3:计算加入两个元素后的 front 和 rear
加入第一个元素后,rear 的值变为 (0+1)%6=1,front 的值不变,仍为 4。加入第二个元素后,rear 的值变为 (1+1)%6=2,front 的值不变,仍为 4。
循环队列是解决假溢出的问题,通常把一维数组看成首尾相接。在循环意义下的加 1 运算通常用求模运算来实现。所以入队和出队时的操作分别为:rear=(rear+1)%m,front=(front+1)%m,其中 m 是数组的大小。
步骤 2:计算删除一个元素后的 front 和 rear
当前 rear 和 front 的值分别为 0 和 3,删除一个元素后,front 的值变为 (3+1)%6=4,rear 的值不变,仍为 0。
步骤 3:计算加入两个元素后的 front 和 rear
加入第一个元素后,rear 的值变为 (0+1)%6=1,front 的值不变,仍为 4。加入第二个元素后,rear 的值变为 (1+1)%6=2,front 的值不变,仍为 4。