File tree Expand file tree Collapse file tree 2 files changed +2
-36
lines changed
Expand file tree Collapse file tree 2 files changed +2
-36
lines changed Original file line number Diff line number Diff line change @@ -189,24 +189,9 @@ System.out.println(listOfStrings);
189189- 尾部插入/删除:只需要修改尾结点的指针即可完成插入/删除操作,因此时间复杂度为 O(1)。
190190- 指定位置插入/删除:需要先移动到指定位置,再修改指定节点的指针完成插入/删除,因此需要移动平均 n/2 个元素,时间复杂度为 O(n)。
191191
192- 这里简单列举一个例子:
192+ 这里简单列举一个例子:假如我们要删除节点9 的话,需要先遍历链表找到该节点。然后,再执行相应节点指针指向的更改,具体的源码可以参考: [ LinkedList 源码分析 ] ( ./linkedlist-source-code.md ) 。
193193
194- ``` java
195- // LinkedList中有5个元素
196- + -- -+ + -- -+ + -- -+ + -- -+ + -- -+
197- | 1 | -- - > | 2 | -- - > | 3 | -- - > | 4 | -- - > | 5 |
198- + -- -+ + -- -+ + -- -+ + -- -+ + -- -+
199- // 在节点2和3之间插入一个新节点6
200- // 我们需要先移动到节点2这里,再修改节点2和节点6的指针(节点2指向节点6,节点6指向节点3)
201- + -- -+ + -- -+ + -- -+ + -- -+ + -- -+ + -- -+
202- | 1 | -- - > | 2 | -- - > | 6 | -- - > | 3 | -- - > | 4 | -- - > | 5 |
203- + -- -+ + -- -+ + -- -+ + -- -+ + -- -+ + -- -+
204- // 删除节点6
205- // 我们需要先移动到节点3这里,找到它的前一个节点和后一个节点,然后再修改节点2的指针(指向节点3)
206- + -- -+ + -- -+ + -- -+ + -- -+ + -- -+
207- | 1 | -- - > | 2 | -- - > | 3 | -- - > | 4 | -- - > | 5 |
208- + -- -+ + -- -+ + -- -+ + -- -+ + -- -+
209- ```
194+ ![ unlink 方法逻辑] ( https://oss.javaguide.cn/github/javaguide/java/collection/linkedlist-unlink.jpg )
210195
211196### LinkedList 为什么不能实现 RandomAccess 接口?
212197
Original file line number Diff line number Diff line change 2323- 尾部插入/删除:只需要修改尾结点的指针即可完成插入/删除操作,因此时间复杂度为 O(1)。
2424- 指定位置插入/删除:需要先移动到指定位置,再修改指定节点的指针完成插入/删除,因此需要移动平均 n/2 个元素,时间复杂度为 O(n)。
2525
26- 这里简单列举一个例子:
27-
28- ``` java
29- // LinkedList中有5个元素
30- + -- -+ + -- -+ + -- -+ + -- -+ + -- -+
31- | 1 | -- - > | 2 | -- - > | 3 | -- - > | 4 | -- - > | 5 |
32- + -- -+ + -- -+ + -- -+ + -- -+ + -- -+
33- // 在节点2和3之间插入一个新节点6
34- // 我们需要先移动到节点2这里,再修改节点2和节点6的指针(节点2指向节点6,节点6指向节点3)
35- + -- -+ + -- -+ + -- -+ + -- -+ + -- -+ + -- -+
36- | 1 | -- - > | 2 | -- - > | 6 | -- - > | 3 | -- - > | 4 | -- - > | 5 |
37- + -- -+ + -- -+ + -- -+ + -- -+ + -- -+ + -- -+
38- // 删除节点6
39- // 我们需要先移动到节点3这里,找到它的前一个节点和后一个节点,然后再修改节点2的指针(指向节点3)
40- + -- -+ + -- -+ + -- -+ + -- -+ + -- -+
41- | 1 | -- - > | 2 | -- - > | 3 | -- - > | 4 | -- - > | 5 |
42- + -- -+ + -- -+ + -- -+ + -- -+ + -- -+
43- ```
44-
4526### LinkedList 为什么不能实现 RandomAccess 接口?
4627
4728` RandomAccess ` 是一个标记接口,用来表明实现该接口的类支持随机访问(即可以通过索引快速访问元素)。由于 ` LinkedList ` 底层数据结构是链表,内存地址不连续,只能通过指针来定位,不支持随机快速访问,所以不能实现 ` RandomAccess ` 接口。
You can’t perform that action at this time.
0 commit comments