题目
若某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( )存储方式最节省运算时间。A. 单链表B. 仅有头指针的单循环链表C. 双链表D. 仅有尾指针的单循环链表
若某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( )存储方式最节省运算时间。
A. 单链表
B. 仅有头指针的单循环链表
C. 双链表
D. 仅有尾指针的单循环链表
题目解答
答案
D. 仅有尾指针的单循环链表
解析
考查要点:本题主要考查链表结构的存储方式对特定操作时间效率的影响,重点在于理解不同链表结构在插入和删除操作中的时间复杂度。
解题核心思路:
- 插入操作:在表尾插入元素时,若链表有尾指针,可直接定位到当前尾节点,时间复杂度为$O(1)$;若无尾指针,需遍历链表,时间复杂度为$O(n)$。
- 删除操作:删除第一个元素时,若链表是单循环链表且有尾指针,可通过尾指针快速定位到尾节点,调整尾节点的指针后删除头节点,时间复杂度为$O(1)$;若仅有头指针,需遍历链表调整尾节点指针,时间复杂度为$O(n)$。
破题关键点:
- 尾指针的作用:直接支持高效插入表尾。
- 单循环链表的优势:结合尾指针,删除头节点时无需遍历链表,可快速调整尾节点的指针。
选项分析
A. 单链表
- 插入表尾:需从头节点遍历到尾节点,时间复杂度为$O(n)$。
- 删除头节点:直接修改头指针,时间复杂度为$O(1)$。
- 结论:插入效率低,不满足“最节省时间”要求。
B. 仅有头指针的单循环链表
- 插入表尾:需从头节点遍历到尾节点,时间复杂度为$O(n)$。
- 删除头节点:需通过尾节点调整链表结构,但无尾指针需遍历链表,时间复杂度为$O(n)$。
- 结论:两项操作均效率低。
C. 双链表
- 插入表尾:若有尾指针,时间复杂度为$O(1)$;但双链表空间消耗更大。
- 删除头节点:直接修改头指针,时间复杂度为$O(1)$。
- 结论:虽然支持高效操作,但双链表的冗余指针浪费空间,效率无明显优势。
D. 仅有尾指针的单循环链表
- 插入表尾:直接通过尾指针定位到尾节点,插入新节点并更新尾指针,时间复杂度为$O(1)$。
- 删除头节点:通过尾指针定位到尾节点,调整尾节点的指针指向新头节点(原头节点的后继),时间复杂度为$O(1)$。
- 结论:两项操作均高效,且空间利用率高。