在一个采用链式存储的队列中,假设队头指针指向链表的第一个节点,队尾指针指向链表的最后一个节点。如果要删除队头元素,以下哪个操作是正确的?
答案解析
核心考点说明:本题考察链式队列的出队操作。链式队列使用链表实现,重点在于正确处理队头指针的变化以及释放被删除节点的内存。解题思路分析:分析链式队列的出队操作,包括空队列的特殊情况和队头指针的更新。具体分析:
1. 检查队列是否为空,若为空则不能进行删除操作。 这是一个非常重要的前置条件。空队列删除会出错,或者引起程序错误。
2. 如果队列非空,需要将队头指针指向原队头节点的下一个节点。
3. 释放原队头节点占用的内存空间,防止内存泄漏。
4. 如果队列只有一个元素,那么删除后,队头和队尾都需要置为NULL。
选项分析:
A. 错误。直接移动队头指针,而不释放原队头节点的内存,会造成内存泄漏。同时未判断队列为空的情况。
B. 正确。此选项正确描述了链式队列删除队头元素的正确操作步骤,包括判断空队列和释放内存。
C. 错误。队尾指针用于入队操作,删除队头元素不应该移动队尾指针。 除非队列为空
D. 错误。只有在队列只有一个元素时,删除这个元素后,队头和队尾指针才置为NULL,否则队尾指针不应该更改。
易错点提醒:链式队列删除节点,需要释放内存,还要注意空队列的特殊情况。
正确答案:B