更新 链表理论基础 排版格式修复

This commit is contained in:
jinbudaily
2023-07-18 14:21:20 +08:00
parent 23c558f9e3
commit b51a1d89bf

View File

@ -16,15 +16,15 @@
如图所示:
![链表1](https://code-thinking-1253855093.file.myqcloud.com/pics/20200806194529815.png)
# 链表的类型
## 链表的类型
接下来说一下链表的几种类型:
## 单链表
### 单链表
刚刚说的就是单链表。
## 双链表
### 双链表
单链表中的指针域只能指向节点的下一个节点。
@ -35,7 +35,7 @@
如图所示:
![链表2](https://code-thinking-1253855093.file.myqcloud.com/pics/20200806194559317.png)
## 循环链表
### 循环链表
循环链表,顾名思义,就是链表首尾相连。
@ -44,7 +44,7 @@
![链表4](https://code-thinking-1253855093.file.myqcloud.com/pics/20200806194629603.png)
# 链表的存储方式
## 链表的存储方式
了解完链表的类型,再来说一说链表在内存中的存储方式。
@ -60,7 +60,7 @@
这个链表起始节点为2 终止节点为7 各个节点分布在内存的不同地址空间上,通过指针串联在一起。
# 链表的定义
## 链表的定义
接下来说一说链表的定义。
@ -100,9 +100,9 @@ head->val = 5;
所以如果不定义构造函数使用默认构造函数的话,在初始化的时候就不能直接给变量赋值!
# 链表的操作
## 链表的操作
## 删除节点
### 删除节点
删除D节点如图所示
@ -116,7 +116,7 @@ head->val = 5;
其他语言例如Java、Python就有自己的内存回收机制就不用自己手动释放了。
## 添加节点
### 添加节点
如图所示:
@ -126,7 +126,7 @@ head->val = 5;
但是要注意要是删除第五个节点需要从头节点查找到第四个节点通过next指针进行删除操作查找的时间复杂度是O(n)。
# 性能分析
## 性能分析
再把链表的特性和数组的特性进行一个对比,如图所示:
@ -143,8 +143,7 @@ head->val = 5;
## 其他语言版本
Java
### Java
```java
public class ListNode {
@ -171,7 +170,7 @@ public class ListNode {
}
```
JavaScript:
### JavaScript:
```javascript
class ListNode {
@ -184,7 +183,7 @@ class ListNode {
}
```
TypeScript:
### TypeScript:
```typescript
class ListNode {
@ -197,7 +196,7 @@ class ListNode {
}
```
Python
### Python
```python
class ListNode:
@ -206,7 +205,7 @@ class ListNode:
self.next = next
```
Go
### Go
```go
type ListNode struct {
@ -215,7 +214,7 @@ type ListNode struct {
}
```
Scala:
### Scala:
```scala
class ListNode(_x: Int = 0, _next: ListNode = null) {
@ -224,7 +223,7 @@ class ListNode(_x: Int = 0, _next: ListNode = null) {
}
```
Rust:
### Rust:
```rust
#[derive(PartialEq, Eq, Clone, Debug)]
@ -246,3 +245,4 @@ impl<T> ListNode<T> {
<a href="https://programmercarl.com/other/kstar.html" target="_blank">
<img src="../pics/网站星球宣传海报.jpg" width="1000"/>
</a>