题目
最大容量为n的循环队列,队尾指针是rear,队头是front,则队空的条件是( )。A. (rear+1)%n==frontB. rear==frontC. rear+1==frontD. (rear-l)%n==front
最大容量为n的循环队列,队尾指针是rear,队头是front,则队空的条件是( )。
A. (rear+1)%n==front
B. rear==front
C. rear+1==front
D. (rear-l)%n==front
题目解答
答案
B. rear==front
解析
循环队列的队空条件是判断队列中没有元素时的指针关系。关键在于理解循环队列的存储结构:
- front指向队头元素的位置,rear指向队尾元素的下一个位置(预留插入空间)。
- 队列为空时,front和rear应指向同一位置(初始状态或所有元素被出队后)。
破题关键:
当队列为空时,front和rear必然相等;当队列非空时,两者必定不相等。因此,队空的条件是 rear == front。
选项分析
-
选项A:
(rear+1)%n == front
该条件表示队尾的下一个位置与队头重合,此时队列已满(无法再插入元素),属于队满条件,非队空条件。 -
选项B:
rear == front
当队列为空时,front和rear指向同一位置,满足此条件,是正确答案。 -
选项C:
rear+1 == front
未考虑循环结构的模运算,仅在非循环队列(且n足够大)时可能成立,但不符合循环队列的逻辑。 -
选项D:
(rear-1)%n == front
此条件无实际意义,与队列状态无关。