题目
已知循环队列存储在一维数组A[0..n-1]中,且队列非空时 front和rear分别指向队头元素和队尾元素。若初始时队列空,且 要求第一个进入队列的元素存储在A[0]处,则初始时front和rear 的值分别是()。A. 0,0B. 0,n-1C. n-1,0D. n-1,n-1
已知循环队列存储在一维数组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
题目解答
答案
B. 0,n-1
解析
循环队列的存储特点在于利用数组的循环特性避免“假溢出”。题目要求初始时队列为空,且第一个元素存入A[0]。关键在于理解初始状态下front和rear的指向关系,以及如何通过它们的变化判断队列状态。
核心思路:
- 空队列条件:通常为
front == rear,但本题中初始时队列空,需通过front和rear的初始值确保插入第一个元素后,A[0]被正确使用。 - 循环特性:当
rear到达数组末尾时,需循环到起始位置。初始时rear指向末尾(n-1),插入第一个元素时,rear自动循环到0,此时A[0]被占用。
初始状态分析
- 队列为空时,
front和rear需满足特定关系。若初始时两者指向同一位置(如选项A),则无法插入第一个元素(因此时队列仍被误判为空)。 - 正确初始值应为
front=0,rear=n-1(选项B)。此时:- 队列为空的条件是
front == (rear + 1) % n(即0 == (n-1 + 1) % n = 0)。 - 插入第一个元素时,
rear变为(n-1 + 1) % n = 0,元素存入A[0],此时front=0,rear=0,队列非空。
- 队列为空的条件是
关键验证
- 插入第一个元素:
rear从n-1变为0,元素存入A[0],符合题意。 - 后续操作:插入第二个元素时,
rear变为1,此时front=0,rear=1,队列状态正确。