循环队列用数组A[0…m一1]存放其元素值,已知其头尾指针分别是front和rear(且队尾指针rear指向队尾元素的下一个元素),则当前队列中的元素个数是( )。

admin2019-12-10  21

问题 循环队列用数组A[0…m一1]存放其元素值,已知其头尾指针分别是front和rear(且队尾指针rear指向队尾元素的下一个元素),则当前队列中的元素个数是(    )。

选项 A、(rear—front+m)%m
B、(rear—front+l)%m
C、rear—front—1
D、rear—front

答案A

解析 因为是循环队列,所以应该分为rear>front和rear<front两种情况来讨论。
(1)当rear>front时,队列中元素个数为
rearfront=(rearfront+m)%m
因为0<rear—front<m,所以rear—front+m与m取余后结果还是rear—front。
(2)当rear<front时,队列中元素个数为
    m—(front—rear)=rear— front+m=(rear— front+m)%m
因为O<rear—front+n<m,所以rear—front+m与m取余后结果还是rear—front+m。
综合(1)、(2)可知,A选项正确。
知识点总结:循环队列的两大状态和两大操作以及三大重点提醒。
(1)两大状态(数学式子表示)
1)队空状态:q.reaF==q.front。
2)队满状态:(q.rear+1) %MAX==q.front。
(2)两大,操作
1)元素x进队操作(移动队尾指针)。
q.reaF(q.rear+1)%MAX;
q.data[q.rear]=x;
2)元素x出队操作(移动队头指针)。
q.front=(qu.front+1)%MAX;
x=q.data[q.front];
转载请注明原文地址:https://kaotiyun.com/show/3U3i777K
0

最新回复(0)