05 链表
单链、循环链、双链与节点连接
本节 12 题。先独立给出结论和理由,再对照解析;新增题与此前题目统一编号。涉及标签时,标签只表示记录身份。
第 01 题
问题 1
Node(10, Node(20)) 中 first.next.value 是多少?
第 02 题
问题 2
为什么普通链表按下标读取第 i 项通常需要 O(i) 时间?
第 03 题
问题 3
在 head 前插入 node,应按什么顺序修改引用?
第 04 题
问题 4
在已知节点 p 后插入新节点,链接操作复杂度是什么?
第 05 题
问题 5
删除单链表中已知值的节点,为什么可能为 O(n)?
第 06 题
问题 6
删除单链表首节点与删除普通中间节点,引用处理有什么差异?
第 07 题
问题 7
哨兵节点会让按值搜索从 O(n) 自动变成 O(1) 吗?
第 08 题
问题 8
维护 tail 时删除最后一项,要注意什么?
第 09 题
问题 9
循环链表遍历还能一直等到 None 才停止吗?
第 10 题
问题 10
双向链表给定节点 p,删除通常需要哪些连接更新?
第 11 题
问题 11
链表在头部增删快,是否意味着比 list 在所有任务上更快?
第 12 题
问题 12
del p 是否一定把节点从链表中移除?