2.1 线性表的定义和基本操作
2.1.1 线性表的定义
- 线性表具有相同数据元素
- 位序 i 从 1 开始,数组下标从 0 开始
- *(或者 &) 表示对参数的修改结果需要带回
2.1.2 线性表的基本操作
2.2 顺序表
2.2.1 顺序表的定义
1. 静态顺序表的定义
逻辑和物理均相邻按顺序排列

2. 动态顺序表的定义
见下面,与基本操作放在了一起
2.2.2 顺序表的基本操作
1. 静态顺序表的初始化
![PYKO[U}UQ9AV`$~XGE6Z[]S.png](/uploads/projects/fromdark@yx0hps/3219e321e70e05559d4baacb90745ed3.png)
2. 静态顺序表的插入
- 可以看到静态顺序表初始化后,系统在内存中开辟了一段存储空间,我们传入 i ,这个 i 是要插入的位置,所以我们要对这个位置进行判断,看 i 是否落在合法的区域。
- e 为要插入的数值

- malloc 是每次申请一片连续的空间,而非在原始位置上扩展
- *data 指向实际存储位置中的第一个元素的位置
6. 动态顺序表的查找之按值查找
2.3 单链表
2.3.1 单链表的定义
![[2U{3VLI(N$N][MF]Z03YFR.png](/uploads/projects/fromdark@yx0hps/3035667ddb32d1c1418ca9da4bc679d1.png)
- LNode 与 LinkList 强调的东西不同
2.3.2 单链表的基本操作
1. 单链表的初始化(带头结点)
![E]EGP56(OVBOY{TDMFLF2X.png
2. 单链表的初始化(不带头结点)

3. 单链表的插入(按位序+带头结点)
![2DABO}$1{0IF1G4CKW5E%U.png
4. 单链表的插入(按位序+不带头结点)
5. 单链表的插入(前插+已知 L)
6. 单链表的插入(前插+不知道 L)、
![~QH`MZ$]%7_5ZPR1M@CE1JL.png](/uploads/projects/fromdark@yx0hps/0af0c6b218ec4bb5c0d7e3da4eb4771b.png)
7. 单链表的删除(按位序+带头结点)
![)]VH_D{{8ML(5`PQVTKDHV8.png](/uploads/projects/fromdark@yx0hps/ef046e9ff359b95446c005657eec2bc8.png)
8. 单链表的查找(按位)
![]AQCV(DG_$}S{7(S04C4)5S.png](/uploads/projects/fromdark@yx0hps/dc2f959f0ab5fcd4cbd6dd3c9c36472e.png)
9. 单链表的查找(按值)

10. 单链表的尾插法

11. 单链表的头插法
- 核心思想就是固定在头结点的位置插入
- 头插法可以逆置链表
![D~$CPYX9LPCP%1M@UZPN.png
2.4 双链表
2.4.1 双链表的定义与基本操作
1. 双链表的初始化
2. 双链表的插入
![D4]}HSK{_NUO6E7EKL$BCOQ.png](/uploads/projects/fromdark@yx0hps/94671d81d9abc88372dc0f6910c5e6f3.png)
3. 双链表的删除
![}IAPY(FJIKVYE@~~X9S)BH.png
4. 双链表的销毁
2.5 循环链表
2.5.1 循环链表的相关操作
![9I3Y}@D_{H}S$]6J7I0%$H2.png](/uploads/projects/fromdark@yx0hps/b1d5dd7e8c2ef53b3ba7807bc6e26c07.png)
2.5.2 循环双链表的相关操作

2.5.3 循环链表的判空
![5UURW4[N(HYFKAC8)Z)S5O.png
2.6 静态链表
2.6.1 什么是静态链表
2.6.2 两种定义静态链表的方式
![S%AJFU_7HNZP)X~PJMOUE6.png
![$JG5F_6~`]985L0I5D4Y725.png](/uploads/projects/fromdark@yx0hps/3788388caa340a6cecbab29c9425ed9a.png)
![`R@7(267%)E$X]GJ)B($5TF.png](/uploads/projects/fromdark@yx0hps/57d4dcba0cf1b64ef67be32bb3e84719.png)

