题21
题目
Q:【2011 统考真题】已知循环队列存储在一维数组 A[0...n - 1] 中,且队列非空时 front 和 rear 分别指向队头元素和队尾元素.
若初始时队列为空, 且要求第一个进入队列的元素存储在 A[0] 处,则初始时 front 和 rear 的值分别是 ( ).
A. 0,0
B. 0,n - 1
C. n - 1,0
D. n - 1,n - 1
分析
A:应该是d这种情况

解
B
根据题意, 第一个元素进入队列后存储在 A[0] 处,此时 front 和 rear 值都为 0 。
入队时因为要执行 (rear+1) % n 操作,所以若入队后指针指向 0,则 rear 初值为 n - 1 ,而因为第一个元素在 A[0] 中,插入操作只改变 rear 指针,所以 front 为 0 不变。
注意
①循环队列是指顺序存储的队列, 而不是指逻辑上的循环, 如循环单链表表示的队列不能称为循环队列。
②front 和 rear 的初值并不是固定的。