Py算法与数据结构

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 是否一定把节点从链表中移除?