题9

题目

假设循环队列 Q[MaxSize] 的队头指针为 front, 队尾指针为 rear, 队列的最大容量为 MaxSize, 此外, 该队列再没有其他数据成员, 则判断该队列已满条件是 ()
A. Q.front == Q.rear
B. Q.front + Q.rear >= MaxSize
C. Q.front == (Q.rear + 1) % MaxSize
D. Q.rear == (Q.front + 1) % MaxSize

分析

C
既然不能附加任何其他数据成员, 只能采用牺牲一个存储单元的方法来区分是队空还是队满, 约定以 “队列头指针在队尾指针的下一位置作为队满的标志”, 因此选 C。
选项 A 是判断队列是否空的条件, 选项 B 和 D 都是干扰项。