Skip to content

Commit

Permalink
Update 01.Linked-List-Basic.md
Browse files Browse the repository at this point in the history
  • Loading branch information
itcharge committed Oct 11, 2023
1 parent b08137d commit e03d9c5
Showing 1 changed file with 23 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@

我们在创建空链表时,只需要把相应的链表头节点变量设置为空链接即可。在 Python 里可以将其设置为 $None$,其他语言也有类似的惯用值,比如 $NULL$、$nil$、$0$ 等。

**链节点以及链表的结构定义** 代码如下
**链节点以及链表结构定义** 的代码如下

```python
# 链节点类
Expand All @@ -77,6 +77,8 @@ class LinkedList:
> 2. 每获取一个数据元素,就为该数据元素生成一个新节点,将新节点插入到链表的尾部。
> 3. 插入完毕之后返回第 $1$ 个链节点的地址。
**「建立一个线性链表」** 的代码如下:

```python
# 根据 data 初始化一个新链表
def create(self, data):
Expand All @@ -92,7 +94,7 @@ def create(self, data):

### 2.3 求线性链表的长度

> **求线性链表的长度**:使用指针变量 $cur$ 顺着链表 $next$ 指针进行移动,并使用计数器 $count$ 记录元素个数。
> **求线性链表长度**:使用指针变量 $cur$ 顺着链表 $next$ 指针进行移动,并使用计数器 $count$ 记录元素个数。
>
> 1. 让指针变量 $cur$ 指向链表的第 $1$ 个链节点。
> 2. 顺着链节点的 $next$ 指针遍历链表,指针变量 $cur$ 每指向一个链节点,计数器就做一次计数。
Expand Down Expand Up @@ -121,6 +123,8 @@ def length(self):
> 2. 顺着链节点的 $next$ 指针遍历链表,如果遇到 $cur.val == val$,则返回当前指针变量 $cur$。
> 3. 如果 $cur$ 指向为空时也未找到,则该链表中没有值为 $val$ 的元素,则返回 $None$。
**「在链表中查找值为 $val$ 的元素」** 的代码如下:

```python
# 查找元素
def find(self, val):
Expand All @@ -133,7 +137,7 @@ def find(self, val):
return None
```

「在链表中查找值为 $val$ 的元素」的操作依赖于链表的链节点个数,因此,「在链表中查找值为 $val$ 的元素」的时间复杂度为 $O(n)$,$n$ 为链表长度。
「在链表中查找值为 $val$ 的元素」的操作依赖于链表的链节点个数,因此,「在链表中查找值为 $val$ 的元素」的时间复杂度为 $O(n)$,$n$ 为链表长度。

### 2.5 插入元素

Expand All @@ -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
Expand All @@ -176,6 +182,8 @@ def insertFront(self, val):
![](https://qcdn.itcharge.cn/images/20211208180111.png)

**「链表尾部插入元素」** 的代码如下:

```python
# 链表尾部插入元素
def insertRear(self, val):
Expand All @@ -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
Expand All @@ -229,6 +239,8 @@ def insertInside(self, index, val):
> 3. 当遍历到第 $index$ 个链节点时停止遍历。
> 4. 直接更改 $cur$ 的值 $val$。
**「将链表中第 $i$ 个元素值改为 $val$」** 的代码如下:

```python
# 改变元素
def change(self, index, val):
Expand Down Expand Up @@ -264,6 +276,8 @@ def change(self, index, val):
![](https://qcdn.itcharge.cn/images/20211208180131.png)

**「链表头部删除元素」** 的代码如下:

```python
# 链表头部删除元素
def removeFront(self):
Expand All @@ -282,6 +296,8 @@ def removeFront(self):
![](https://qcdn.itcharge.cn/images/20211208180138.png)

**「链表尾部删除元素」** 的代码如下:

```python
# 链表尾部删除元素
def removeRear(self):
Expand All @@ -305,6 +321,8 @@ def removeRear(self):
![](https://qcdn.itcharge.cn/images/20211208180144.png)

**「链表中间删除元素」** 的代码如下:

```python
# 链表中间删除元素
def removeInside(self, index):
Expand Down

0 comments on commit e03d9c5

Please sign in to comment.