循环队列用数组A[0…m一1]存放其元素值,已知其头尾指针分别是front和rear(且队尾指针rear指向队尾元素的下一个元素),则当前队列中的元素个数是( )。
【正确答案】 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];