问题 单项选择题

设数组data[0…m]作为循环队列sq的存储空间,front为队头指针,rear为队尾指针,则执行出队操作的语句为( )。

A.sq↑.front: =sq↑.front+1;

B.sq↑.front:=(sq↑.front+1)% maxsize;

C.sq↑.rear: =(sq↑.rear+1)% maxsize;

D.sq↑.front: =(sq↑.front+1)% (maxsize+1);

答案

参考答案:B

解析: 循环队列采用的方法是:假设向量sq↑.data[maxsize]是一个首尾相接的圆环,即sq↑.data[0]接在sq↑.data[maxsize-1]之后,我们称这种意义下的向量为循环向量,并称循环向量中的队列为循环队列。若当前尾指针等于向量的上界,则再做入队操作时,令尾指针等于向量的下界,这样就利用已被删除的元素空间,避免假上溢现象。因此,进行入队操作时,循环意义下的尾指针加1操作可描述为:if(sq↑.rear>=maxsize)sq↑.near:=0;else sq↑.rear++。如果利用“模运算”,上述循环意义下的尾指针加1操作,可以更简洁地描述为:sq↑.rear=(sq↑.rear+1)% maxsize。同样,执行出队操作时,循环意义下的头指针加1操作,也可利用“模运算”来实现:sq↑. front:=(sq↑. front+1)% maxsize。

选择题
单项选择题