单选题 循环队列用数组A[0...m-1]存放其元素值,头尾指针分别为front和rear,front指向队头元素,rear指向队尾元素的下一个元素,其移动按数组下标增大的方向进行(rear!=m-1时),则当前队列中的元素个数是______。
【正确答案】 A
【答案解析】[解析] 考查循环队列的性质。分rear>front和rear<front两种情况讨论:
①当rear>front时,队列中元素个数为rear-front=(rear-front+m)%m
②当rear<front时,队列中元素个数为m-(front-rear)=(rear-front+m)%m
综合①、②可知,选项A正确。
[另解] 特殊值代入法:对于循环队列,C和D无取MOD操作,显然错误,直接排除。设front=0、rear=1,则队列中存在一个元素A[0],代入AB两项,显然仅有A符合。
注意:①不同教材对队尾指针的定义可能不同,有的定义其指向队尾元素,有的定义其指向队尾元素的下一个元素,不同的定义会导致不同的答案(决定是先移动指针,还是先存取元素),考题中通常都会特别说明。②循环队列的队尾指针、队头指针、队列中元素个数,知道其中任何两者均可求出第三者。