8
8
9
9
以单链表为例,链表的存储方式如下图所示。
10
10
11
- ![ ] ( https://qcdn.itcharge.cn/images/20211208180037 .png )
11
+ ![ 链表 ] ( https://qcdn.itcharge.cn/images/202405092229936 .png )
12
12
13
13
如上图所示,链表通过将一组任意的存储单元串联在一起。其中,每个数据元素占用若干存储单元的组合称为一个「链节点」。为了将所有的节点串起来,每个链节点不仅要存放一个数据元素的值,还要存放一个指出这个数据元素在逻辑关系上的直接后继元素所在链节点的地址,该地址被称为「后继指针 $next$」。
14
14
28
28
29
29
- ** 双向链表特点** :从双链表的任意一个节点开始,都可以很方便的访问它的前驱节点和后继节点。
30
30
31
- ![ ] ( https://qcdn.itcharge.cn/images/20211208103220 .png )
31
+ ![ 双向链表 ] ( https://qcdn.itcharge.cn/images/202405092230869 .png )
32
32
33
33
### 1.3 循环链表
34
34
35
35
> ** 循环链表(Circular linked list)** :链表的一种。它的最后一个链节点指向头节点,形成一个环。
36
36
37
37
- ** 循环链表特点** :从循环链表的任何一个节点出发都能找到任何其他节点。
38
38
39
- ![ ] ( https://qcdn.itcharge.cn/images/20211208180048 .png )
39
+ ![ 循环链表 ] ( https://qcdn.itcharge.cn/images/202405092230094 .png )
40
40
41
41
接下来我们以最基本的「单链表」为例,介绍一下链表的基本操作。
42
42
@@ -157,7 +157,7 @@ def find(self, val):
157
157
> 2 . 然后将 $node$ 的 $next$ 指针指向链表的头节点 $head$。
158
158
> 3 . 再将链表的头节点 $head$ 指向 $node$。
159
159
160
- ![ ] ( https://qcdn.itcharge.cn/images/20211208180101 .png )
160
+ ![ 链表头部插入元素 ] ( https://qcdn.itcharge.cn/images/202405092231514 .png )
161
161
162
162
** 「链表头部插入元素」** 的代码如下:
163
163
@@ -180,7 +180,7 @@ def insertFront(self, val):
180
180
> 3 . 通过链节点的 $next$ 指针移动 $cur$ 指针,从而遍历链表,直到 $cur.next$ 为 $None$。
181
181
> 4 . 令 $cur.next$ 指向将新的链节点 $node$。
182
182
183
- ![ ] ( https://qcdn.itcharge.cn/images/20211208180111 .png )
183
+ ![ 链表尾部插入元素 ] ( https://qcdn.itcharge.cn/images/202405092232023 .png )
184
184
185
185
** 「链表尾部插入元素」** 的代码如下:
186
186
@@ -207,7 +207,7 @@ def insertRear(self, val):
207
207
> 5 . 将 $node.next$ 指向 $cur.next$。
208
208
> 6 . 然后令 $cur.next$ 指向 $node$。
209
209
210
- ![ ] ( https://qcdn.itcharge.cn/images/20211208180121 .png )
210
+ ![ 链表中间插入元素 ] ( https://qcdn.itcharge.cn/images/202405092232900 .png )
211
211
212
212
** 「链表中间插入元素」** 的代码如下:
213
213
@@ -274,7 +274,7 @@ def change(self, index, val):
274
274
>
275
275
> 1 . 直接将 $self.head$ 沿着 $next$ 指针向右移动一步即可。
276
276
277
- ![ ] ( https://qcdn.itcharge.cn/images/20211208180131 .png )
277
+ ![ 链表头部删除元素 ] ( https://qcdn.itcharge.cn/images/202405092231281 .png )
278
278
279
279
** 「链表头部删除元素」** 的代码如下:
280
280
@@ -294,7 +294,7 @@ def removeFront(self):
294
294
> 1 . 先使用指针变量 $cur$ 沿着 $next$ 指针移动到倒数第 $2$ 个链节点。
295
295
> 2 . 然后将此节点的 $next$ 指针指向 $None$ 即可。
296
296
297
- ![ ] ( https://qcdn.itcharge.cn/images/20211208180138 .png )
297
+ ![ 链表尾部删除元素 ] ( https://qcdn.itcharge.cn/images/202405092232050 .png )
298
298
299
299
** 「链表尾部删除元素」** 的代码如下:
300
300
@@ -319,7 +319,7 @@ def removeRear(self):
319
319
> 1 . 先使用指针变量 $cur$ 移动到第 $i - 1$ 个位置的链节点。
320
320
> 2 . 然后将 $cur$ 的 $next$ 指针,指向要第 $i$ 个元素的下一个节点即可。
321
321
322
- ![ ] ( https://qcdn.itcharge.cn/images/20211208180144 .png )
322
+ ![ 链表中间删除元素 ] ( https://qcdn.itcharge.cn/images/202405092233332 .png )
323
323
324
324
** 「链表中间删除元素」** 的代码如下:
325
325
0 commit comments