更新目录链接

This commit is contained in:
lifei
2020-12-02 22:36:20 +08:00
parent a36107416b
commit 4349c11ab2
4 changed files with 90 additions and 35 deletions

View File

@@ -216,8 +216,62 @@ $$
O(1) < O(log_2n) < O(n) < O(nlog_2n) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)
$$
## 3. [线性表](ch2/README.md)
## 3. [线性表](ch2/README.md#线性表)
## 4. [栈和队列](ch3/README.md)
- [定义](ch2/README.md#1-定义)
- [基本操作](ch2/README.md#2-基本操作)
- [顺序表](ch2/sequence/README.md#顺序表)
- [静态分配](ch2/sequence/README.md#1-静态分配)
- [动态分配](ch2/sequence/README.md#2-动态分配)
- [单链表](ch2/single-link/README.md#单链表)
- [带头结点](ch2/single-link/README.md#4-带头结点的单链表)
- [不带头结点](ch2/single-link/README.md#3-不带头结点的单链表)
- [双链表](ch2/double-link/README.md#双链表)
- [循环链表](ch2/circular-link/README.md#循环链表)
- [循环单链表](ch2/circular-link/README.md#1-循环单链表)
- [循环双链表](ch2/circular-link/README.md#2-循环双链表)
- [静态链表](ch2/static-link/README.md#静态链表)
- [顺序表 V.S 链表](ch2/README.md#9-顺序表-vs-链表)
## 5. [](ch4/README.md)
## 4. [栈和队列](ch3/README.md#栈和队列)
- [](ch3/stack/README.md#栈)
- [顺序栈](ch3/stack/README.md#1-顺序栈)
- [共享栈](ch3/stack/README.md#18-共享栈)
- [链栈](ch3/stack/README.md#2-链栈)
- [队列](ch3/queue/README.md#队列)
- [队列的顺序实现](ch3/queue/README.md#1-队列的顺序实现)
- [队列的链式实现](ch3/queue/README.md#2-队列的链式实现)
- [双端队列](ch3/README.md#3-双端队列)
- [栈的应用](ch3/stack-applications/README.md#栈的应用)
- [括号匹配](ch3/stack-applications/README.md#1-括号匹配)
- [表达式求值](ch3/stack-applications/README.md#2-表达式求值)
- [递归](ch3/stack-applications/README.md#3-递归)
- [队列的应用](ch3/README.md#5-队列的应用)
- 树的层次遍历
- 图的广度优先遍历
- 操作系统资源分配
- [矩阵的压缩存储](ch3/matrix/README.md#矩阵的压缩存储)
- [对称矩阵](ch3/matrix/README.md#3-对称矩阵)
- [三角矩阵](ch3/matrix/README.md#4-三角矩阵)
- [三对角矩阵](ch3/matrix/README.md#5-三对角矩阵)
- [稀疏矩阵](ch3/matrix/README.md#6-稀疏矩阵)
## 5. [串](ch4/README.md#串)
- [定义](ch4/README.md#1-定义)
- [基本操作](ch4/README.md#2-基本操作)
- [串的存储结构](ch4/README.md#3-串的存储结构)
- [顺序存储](ch4/README.md#31-顺序存储)
- [链式存储](ch4/README.md#32-链式存储)
- [基本操作的实现](ch4/README.md#4-基本操作的实现)
- [求子串](ch4/README.md#41-求子串)
- [串的比较](ch4/README.md#42-串的比较)
- [求串在主串中的位置](ch4/README.md#43-求串在主串中的位置)
- [朴素模式匹配算法](ch4/README.md#5-朴素模式匹配算法性能分析)
- [KMP 算法](ch4/README.md#6-KMP-算法)
- [改进思路](ch4/README.md#61-改进思路)
- [next 数组](ch4/README.md#62-next-数组)
- [nextval 数组](ch4/README.md#63-KMP-算法优化)
## 6. [树与二叉树](ch5/README.md#树与二叉树)

View File

@@ -54,43 +54,43 @@ Tips
- 循环链表
- 静态链表
## 4. [顺序表](sequence/README.md)
## 4. [顺序表](sequence/README.md#顺序表)
- 优点:可随机存取,存储密度高。
- 缺点:要求大片连续空间,改变容量不方便。
## 5. [单链表](single-link/README.md)
## 5. [单链表](single-link/README.md#单链表)
- 缺点:无法逆向检索,有时候不太方便。
## 6. [双链表](double-link/README.md)
## 6. [双链表](double-link/README.md#双链表)
### 6.1. 初始化
### 6.1. [初始化](double-link/README.md#1-初始化)
头结点 `prior``next` 都指向 `NULL`
### 6.2. 插入(后插)
### 6.2. [插入(后插)](double-link/README.md#2-插入)
- 注意新插入结点、前驱结点、后继结点的指针修改。
- 边界情况:新插入结点在最后一个位置,需特殊处理。
### 6.3. 删除(后删)
### 6.3. [删除(后删)](double-link/README.md#3-删除)
- 注意删除结点的前驱结点、后继结点的指针修改。
- 边界情况:如果被删除结点是最后一个数据结点,需特殊处理。
### 6.4. 遍历
### 6.4. [遍历](double-link/README.md#4-遍历)
- 从一个给定结点开始,后向遍历、前向遍历的实现(循环的终止条件)。
- 双链表不可随机存取,按位查找、按值查找都只能用遍历的方式实现。
## 7. [循环链表](circular-link/README.md)
## 7. [循环链表](circular-link/README.md#循环链表)
- 如何判空
- 如何判断结点 `p` 是否是表尾、表头结点
- 如何在表头、表中、表尾插入、删除一个结点
## 8. [静态链表](static-link/README.md)
## 8. [静态链表](static-link/README.md#静态链表)
用数组的方式实现的链表。
@@ -102,7 +102,7 @@ Tips
- 不支持指针的低级语言。
- 数据元素数量固定不变的场景(如操作系统的文件分配表 FAT
## 9. 顺序表 VS 链表
## 9. 顺序表 V.S 链表
三要素:

View File

@@ -8,7 +8,7 @@
栈和队列都是**操作受限**的线性表。
## 1. [栈](stack/README.md)
## 1. [栈](stack/README.md#栈)
### 1.1. 定义
@@ -57,36 +57,36 @@ $$
=42
$$
### 1.3. [顺序栈](stack/README.md)
### 1.3. [顺序栈](stack/README.md#1-顺序栈)
顺序存储,用静态数据实现,并需要记录栈顶指针。
基本操作
- 初始化(创)
- 进栈(增)
- 出栈(删)
- 获取栈顶元素(查询)
- [初始化(创)](stack/README.md#12-初始化栈)
- [进栈(增)](stack/README.md#13-进入栈)
- [出栈(删)](stack/README.md#14-出栈)
- [获取栈顶元素(查询)](stack/README.md#15-获取栈顶元素)
两种实现
- 初始化时 `top=-1`
- 初始化时 `top=0`
共享栈
[共享栈](stack/README.md#18-共享栈)
- 两个栈共享同一片内存空间,两个栈从两边往中间增长。
- 初始化:`S.top0 = -1;``S.top1 = MaxSize;`
- 栈满条件:`S.top0 + 1 == S.top1;`
### 1.4. [链栈](stack/README.md)
### 1.4. [链栈](stack/README.md#2-链栈)
与单链表类似,只实现头插法、头结点出栈。
- 带头结点的链栈
- 不带头结点的链栈
## 2. [队列](queue/README.md)
## 2. [队列](queue/README.md#队列)
### 2.1. 定义
@@ -121,7 +121,7 @@ $$
- `GetHead(Q, &x)`:读队头元素。若队列 $Q$ 非空,则用 $x$ 返回队头元素。
- `QueueEmpty(Q)`:判断一个队列 $Q$ 是否为空。若 $Q$ 为空,则返回 `true`,否则返回 `false`
### 2.3. [队列的顺序实现](queue/README.md)
### 2.3. [队列的顺序实现](queue/README.md#1-队列的顺序实现)
实现思想:
@@ -146,7 +146,7 @@ $$
- 增加 `tag` 变量用于标记最近一次操作是入队还是出队操作。
- ...
### 2.4. [队列的链式实现](queue/README.md)
### 2.4. [队列的链式实现](queue/README.md#2-队列的链式实现)
实现方式:
@@ -225,9 +225,9 @@ $$
| 1,4,2,3 | 2,4,1,1 | 3,4,1,2 | 4,3,1,2 |
| 1,5,3,2 | 2,4,3,3 | 3,4,2,1 | 4,3,2,1 |
## 4. [栈的应用](stack-applications/README.md)
## 4. [栈的应用](stack-applications/README.md#栈的应用)
### 4.1. [括号匹配](stack-applications/README.md)
### 4.1. [括号匹配](stack-applications/README.md#1-括号匹配)
实现思路:
@@ -241,7 +241,7 @@ $$
- 右括号单身:扫描到右括号,但是此时栈空。
- 左右括号不匹配:栈顶左括号,与当前的右括号不匹配。
### 4.2. [表达式求值](stack-applications/README.md)
### 4.2. [表达式求值](stack-applications/README.md#2-表达式求值)
三种算数表达式:
@@ -263,7 +263,7 @@ $$
中缀表达式求值 = 中缀转后缀 + 后缀表达式求值
$$
### 4.3. [递归](stack-applications/README.md)
### 4.3. [递归](stack-applications/README.md#3-递归)
实现递归表达式:
@@ -281,25 +281,25 @@ $$
- 图的广度优先遍历
- 多个进程争抢着使用优先的系统资源时FCFSFirst Come First Service先来先服务是一种常用策略。
## 6. [矩阵的压缩存储](matrix/README.md)
## 6. [矩阵的压缩存储](matrix/README.md#矩阵的压缩存储)
数组的存储结构:
- 一维数组
- 二维数组
- [一维数组](matrix/README.md#1-一维数组)
- [二维数组](matrix/README.md#2-二维数组)
特殊矩阵:
- 对称矩阵
- [对称矩阵](matrix/README.md#3-对称矩阵)
- 特点:对方阵中的任意一个元素,有 $a_{i,j}=a_{j,i}$。
- 压缩:只存主对角线+下三角区(或主对角线+上三角区)。
- 三角矩阵
- [三角矩阵](matrix/README.md#4-三角矩阵)
- 特点:上三角区全为常量(下三角矩阵);或下三角区全为常量(上三角矩阵)。
- 压缩:按行优先/列优先规则依次存储非常量区域,并在最后一个位置存放常量 $c$。
- 三对角矩阵
- [三对角矩阵](matrix/README.md#5-三对角矩阵)
- 特点:当 $|i-j|>1$ 时,$a_{i,j}=0$ $1 \leq i, j \leq n$)。
- 压缩:按行优先/列优先规则依次存储带状区域。
- 稀疏矩阵
- [稀疏矩阵](matrix/README.md#6-稀疏矩阵)
- 特点:非零元素个数远少于零元素个数。
- 压缩:只存储非零元素
- 顺序存储:顺序存储三元组 `<行,列,值>`

1
ch5/README.md Normal file
View File

@@ -0,0 +1 @@
# 树与二叉树