From e03d9c50f57c4678e414354659250ef5e4eac110 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Wed, 11 Oct 2023 18:07:42 +0800 Subject: [PATCH] Update 01.Linked-List-Basic.md --- .../01.Linked-List-Basic.md | 28 +++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/Contents/02.Linked-List/01.Linked-List-Basic/01.Linked-List-Basic.md b/Contents/02.Linked-List/01.Linked-List-Basic/01.Linked-List-Basic.md index 8a3de69b..d30db06e 100644 --- a/Contents/02.Linked-List/01.Linked-List-Basic/01.Linked-List-Basic.md +++ b/Contents/02.Linked-List/01.Linked-List-Basic/01.Linked-List-Basic.md @@ -54,7 +54,7 @@ 我们在创建空链表时,只需要把相应的链表头节点变量设置为空链接即可。在 Python 里可以将其设置为 $None$,其他语言也有类似的惯用值,比如 $NULL$、$nil$、$0$ 等。 -**「链节点以及链表的结构定义」** 代码如下: +**「链节点以及链表结构定义」** 的代码如下: ```python # 链节点类 @@ -77,6 +77,8 @@ class LinkedList: > 2. 每获取一个数据元素,就为该数据元素生成一个新节点,将新节点插入到链表的尾部。 > 3. 插入完毕之后返回第 $1$ 个链节点的地址。 +**「建立一个线性链表」** 的代码如下: + ```python # 根据 data 初始化一个新链表 def create(self, data): @@ -92,7 +94,7 @@ def create(self, data): ### 2.3 求线性链表的长度 -> **求线性链表的长度**:使用指针变量 $cur$ 顺着链表 $next$ 指针进行移动,并使用计数器 $count$ 记录元素个数。 +> **求线性链表长度**:使用指针变量 $cur$ 顺着链表 $next$ 指针进行移动,并使用计数器 $count$ 记录元素个数。 > > 1. 让指针变量 $cur$ 指向链表的第 $1$ 个链节点。 > 2. 顺着链节点的 $next$ 指针遍历链表,指针变量 $cur$ 每指向一个链节点,计数器就做一次计数。 @@ -121,6 +123,8 @@ def length(self): > 2. 顺着链节点的 $next$ 指针遍历链表,如果遇到 $cur.val == val$,则返回当前指针变量 $cur$。 > 3. 如果 $cur$ 指向为空时也未找到,则该链表中没有值为 $val$ 的元素,则返回 $None$。 +**「在链表中查找值为 $val$ 的元素」** 的代码如下: + ```python # 查找元素 def find(self, val): @@ -133,7 +137,7 @@ def find(self, val): return None ``` -「在链表中查找值为 $val$ 的元素」的操作依赖于链表的链节点个数,因此,「「在链表中查找值为 $val$ 的元素」」的时间复杂度为 $O(n)$,$n$ 为链表长度。 +「在链表中查找值为 $val$ 的元素」的操作依赖于链表的链节点个数,因此,「在链表中查找值为 $val$ 的元素」的时间复杂度为 $O(n)$,$n$ 为链表长度。 ### 2.5 插入元素 @@ -155,8 +159,10 @@ def find(self, val): ![](https://qcdn.itcharge.cn/images/20211208180101.png) +**「链表头部插入元素」** 的代码如下: + ```python -# 头部插入元素 +# 链表头部插入元素 def insertFront(self, val): node = ListNode(val) node.next = self.head @@ -176,6 +182,8 @@ def insertFront(self, val): ![](https://qcdn.itcharge.cn/images/20211208180111.png) +**「链表尾部插入元素」** 的代码如下: + ```python # 链表尾部插入元素 def insertRear(self, val): @@ -201,8 +209,10 @@ def insertRear(self, val): ![](https://qcdn.itcharge.cn/images/20211208180121.png) +**「链表中间插入元素」** 的代码如下: + ```python -# 中间插入元素 +# 链表中间插入元素 def insertInside(self, index, val): count = 0 cur = self.head @@ -229,6 +239,8 @@ def insertInside(self, index, val): > 3. 当遍历到第 $index$ 个链节点时停止遍历。 > 4. 直接更改 $cur$ 的值 $val$。 +**「将链表中第 $i$ 个元素值改为 $val$」** 的代码如下: + ```python # 改变元素 def change(self, index, val): @@ -264,6 +276,8 @@ def change(self, index, val): ![](https://qcdn.itcharge.cn/images/20211208180131.png) +**「链表头部删除元素」** 的代码如下: + ```python # 链表头部删除元素 def removeFront(self): @@ -282,6 +296,8 @@ def removeFront(self): ![](https://qcdn.itcharge.cn/images/20211208180138.png) +**「链表尾部删除元素」** 的代码如下: + ```python # 链表尾部删除元素 def removeRear(self): @@ -305,6 +321,8 @@ def removeRear(self): ![](https://qcdn.itcharge.cn/images/20211208180144.png) +**「链表中间删除元素」** 的代码如下: + ```python # 链表中间删除元素 def removeInside(self, index):