设某循环队列Q的定义中有front和rear两个域变量,其中,front指示队头元素的位置,rear指示队尾元素之后的位置,如下图所示。若该队列的容量为M,则其长度为( )。

- A.(Q.rear-Q.front+1)
- B.(Q.rear-Q.front+M)
- C.(Q.rear-Q.front+1)%M
- D.(Q.rear-Q.front+M)%M
正确答案及解析
正确答案
D
解析
本题考查循环队列长度的求取。
根据图示,可以得到长度(Q.rear-Q.front+M),但在此不容忽视的一个问题是,循环队列在进行了多次入队出队操作之后,可能出现超出队列长度溢出的情况,因此需要让其与M进行求模操作,修正位置,故(Q.rear-Q.front+M)%M为队列中的元素个数(即队列长度)。





