A-A+

设数组data[0…m]作为循环队列s q的存储空间 front为队头指针 rear为队尾指

2022-08-05 22:21:40 问答库 阅读 172 次

问题详情

设数组data[0…m]作为循环队列s q的存储空间,front为队头指针,rear为队尾指针,则执行出队操作的语句为()。
A.S q↑.front:=s q↑.front+1;
B.S q↑.front:=(S q↑.front+1)%maxsize;
C.S q↑.rear:=(S q↑.rear+1)%maxsize;
D.S q↑.front:=(s q↑.front+1)%(maxsize+1);请帮忙给出正确答案和分析,谢谢!

参考答案

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

考点:队列,数组