题目
某带链的队列初始状态[1]为front=rear=NULL。经过一系列正常的入队与退队操作后,front=rear=10。该队列中的元素个数为()。A.1B.0C.1或0D.不确定
某带链的队列初始状态[1]为front=rear=NULL。经过一系列正常的入队与退队操作后,front=rear=10。该队列中的元素个数为()。
- A.
1
- B.
0
- C.
1或0
- D.
不确定
题目解答
答案
A
解析
考查要点:本题主要考查带链队列的结构特点及入队、退队操作后的状态判断。
解题核心思路:
- 带链队列的基本性质:队列的
front
指向队头,rear
指向队尾。 - 关键状态分析:当
front == rear
时,队列可能有两种情况:- 队列为空(初始状态,
front == rear == NULL
)。 - 队列中仅有一个元素(
front
和rear
指向同一节点)。
- 队列为空(初始状态,
- 操作合法性:题目中强调“经过一系列正常的入队与退队操作”,需排除异常操作导致的矛盾状态。
破题关键点:
- 排除矛盾状态:若队列中元素被退队至最后一个,此时
front
和rear
应同时置空,而非指向同一节点。因此,front == rear != NULL
只能说明队列中存在且仅有一个元素。
状态分析
- 初始状态:
front = rear = NULL
,队列为空。 - 入队操作:
- 第一次入队时,
front
和rear
均指向新节点(例如节点10
),此时队列中元素个数为1
。
- 第一次入队时,
- 退队操作:
- 若队列中仅有一个元素时退队,
front
和rear
应同时置空(合法操作)。 - 若队列中有多个元素时退队,
front
指向下一个节点,rear
保持不变。
- 若队列中仅有一个元素时退队,
- 当前状态:
front = rear = 10
,说明节点10
同时是队头和队尾。根据队列性质,此时队列中必须且只能有一个元素。
选项排除
- 选项B(0):若队列为空,
front
和rear
应为NULL
,与题意矛盾。 - 选项C(1或0):队列中元素个数不能同时为
1
和0
。 - 选项D(不确定):题目中操作正常,状态唯一对应元素个数为
1
。