题目
32.用链接方式存储的队列,在进行删除运算时( )。A. 仅修改头指针B. 仅修改尾指针C. 头、尾指针都要修改D. 头、尾指针可能都要修改
32.用链接方式存储的队列,在进行删除运算时( )。
A. 仅修改头指针
B. 仅修改尾指针
C. 头、尾指针都要修改
D. 头、尾指针可能都要修改
题目解答
答案
D. 头、尾指针可能都要修改
解析
本题考查链式队列的删除操作中头指针和尾指针的修改情况。链式队列通常用单链表实现,头指针指向队头节点,尾指针指向队尾节点。删除操作(出队)时,需根据队列当前状态判断指针是否需要调整:
- 队列不为空且仅有一个元素:删除后队列为空,此时头、尾指针均需置空。
- 队列有多个元素:仅需修改头指针,尾指针保持不变。
因此,删除操作可能需要同时修改头尾指针,也可能仅修改头指针。
链式队列的删除操作步骤如下:
1. 判断队列是否为空
若队列为空(头指针为null),直接返回错误。
2. 删除队头节点
- 将头指针后移一位(
head = head.next)。 - 若原队头是唯一节点(此时新头指针为
null),则尾指针也需置空(tail = null)。
3. 特殊情况分析
- 队列仅有一个节点:删除后队列为空,头、尾指针均需修改。
- 队列有多个节点:仅修改头指针,尾指针不变。
综上,删除操作可能需要同时修改头尾指针,也可能仅修改头指针,因此正确答案为D。