2.1 线性表的定义和基本操作
2.1.1 线性表的定义
- 线性表具有相同数据元素
- 位序 i 从 1 开始,数组下标从 0 开始
- *(或者 &) 表示对参数的修改结果需要带回
2.1.2 线性表的基本操作
2.2 顺序表
2.2.1 顺序表的定义
1. 静态顺序表的定义
逻辑和物理均相邻按顺序排列
![BE@MVOB[$QXVQC
6)C9EKF.png](https://cdn.nlark.com/yuque/0/2020/png/230760/1592635978024-cf2ba1a4-eaa5-4b8a-b512-72b280305665.png#align=left&display=inline&height=842&margin=%5Bobject%20Object%5D&name=BE%40MVO%60B%5B%24QXVQC%606%29C9EKF.png&originHeight=842&originWidth=1747&size=686165&status=done&style=none&width=1747)
2. 动态顺序表的定义
见下面,与基本操作放在了一起
2.2.2 顺序表的基本操作
1. 静态顺序表的初始化
2. 静态顺序表的插入
- 可以看到静态顺序表初始化后,系统在内存中开辟了一段存储空间,我们传入 i ,这个 i 是要插入的位置,所以我们要对这个位置进行判断,看 i 是否落在合法的区域。
- e 为要插入的数值
![(KT`HTHRL66RV4C1ZELSLN.png
引用类型:与地址相关的
3. 静态顺序表的删除
4. 静态顺序表的查找之按位查找
![QL)8H{QXI3$W9XKMF6@(AB.png
5. 动态顺序表的定义,初始化与增加
- malloc 是每次申请一片连续的空间,而非在原始位置上扩展
- *data 指向实际存储位置中的第一个元素的位置
6. 动态顺序表的查找之按值查找
2.3 单链表
2.3.1 单链表的定义
- LNode 与 LinkList 强调的东西不同
2.3.2 单链表的基本操作
1. 单链表的初始化(带头结点)
![E]EGP56(OVBOY{TDMFLF2X.png
2. 单链表的初始化(不带头结点)
3. 单链表的插入(按位序+带头结点)
![2DABO}$1{0IF1G4CKW5E%U.png
4. 单链表的插入(按位序+不带头结点)
5. 单链表的插入(前插+已知 L)
6. 单链表的插入(前插+不知道 L)、
7. 单链表的删除(按位序+带头结点)
8. 单链表的查找(按位)
9. 单链表的查找(按值)
10. 单链表的尾插法
11. 单链表的头插法
- 核心思想就是固定在头结点的位置插入
- 头插法可以逆置链表
![D~$CPYX9LPCP
%1M@UZPN.png
2.4 双链表
2.4.1 双链表的定义与基本操作
1. 双链表的初始化
2. 双链表的插入
3. 双链表的删除
![}IAPY(FJIKVYE@~~X9S)BH.png
4. 双链表的销毁
2.5 循环链表
2.5.1 循环链表的相关操作
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