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

admin2013-12-02  36

问题 设数组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[maxslze一1]之后。我们将这种意义下的向量称循环向量,并将循环向量中的队列称为循环队列。若当前尾指针等于向量的上界,则再做入队列操作时.令尾指针等于向量的下界,这样就利用到已被删除的元素空间,克服假上溢现泉。因此入队操作时,在循环意义下的尾指针加1操作可描述为:if(sq↑.rear>=maxsize)sq↑.near:=0;elsesq十.rea!’++;如果利用“模运算”,上述循环意义下的尾指针加1操作,可以更简洁地描述为:sq↑.rear=(sq↑.rear+1)%maxsize。同样。出队操作时,在循环意义下的头指针加1操作,也可利用“模运算”来实现:sq↑.from:=(sq↑.front+1)%max—size。
转载请注明原文地址:https://kaotiyun.com/show/SmID777K
0

最新回复(0)