2.1 线性表的定义和基本操作

image.png

2.1.1 线性表的定义

  1. 线性表具有相同数据元素
  2. 位序 i 从 1 开始,数组下标从 0 开始
  3. *(或者 &) 表示对参数的修改结果需要带回

image.png

2.1.2 线性表的基本操作

创建,销毁,增删改查

2.2 顺序表

2.2.1 顺序表的定义

1. 静态顺序表的定义

逻辑和物理均相邻按顺序排列
![BE@MVOB[$QXVQC6)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)
image.png

2. 动态顺序表的定义

见下面,与基本操作放在了一起

2.2.2 顺序表的基本操作

1. 静态顺序表的初始化

PYKO[U}UQ9AV`$~XGE6Z[]S.png

2. 静态顺序表的插入

  1. 可以看到静态顺序表初始化后,系统在内存中开辟了一段存储空间,我们传入 i ,这个 i 是要插入的位置,所以我们要对这个位置进行判断,看 i 是否落在合法的区域。
  2. e 为要插入的数值

![(KT`HTHRL66RV4C1ZELSLN.png
引用类型:与地址相关的

【注】参数的值传递和地址传递
值传递
image.png
地址传递
image.png

3. 静态顺序表的删除

B9PF5QTKB`H8GTH{8NOA`1F.png

4. 静态顺序表的查找之按位查找

![QL)8H{QXI3$W9XKMF6@(AB.png

5. 动态顺序表的定义,初始化与增加

T}MB7{(DT13XNY6FWA4AM$I.png

  1. malloc 是每次申请一片连续的空间,而非在原始位置上扩展
  2. *data 指向实际存储位置中的第一个元素的位置

6. 动态顺序表的查找之按值查找

`R@7(267%)E$X]GJ)B($5TF.png

2.3 单链表

2.3.1 单链表的定义

[2U{3VLI(N$N][MF]Z03YFR.png

  1. LNode 与 LinkList 强调的东西不同

7F1KJ3G33}Z46A%)ZRB9EB5.png

2.3.2 单链表的基本操作

1. 单链表的初始化(带头结点)

![E]EGP56(OVBOY{TDMFLF2X.png

2. 单链表的初始化(不带头结点)

image.png

3. 单链表的插入(按位序+带头结点)

![2DABO}$1{0IF1G4CKW5E%U.png

4. 单链表的插入(按位序+不带头结点)

IAJKKVC1HLZ)UHX6T95G%QS.png

5. 单链表的插入(前插+已知 L)

![S`SXPEMZBMU%TS6ZLJ3UN7.png

6. 单链表的插入(前插+不知道 L)、

~QH`MZ$]%7_5ZPR1M@CE1JL.png

7. 单链表的删除(按位序+带头结点)

)]VH_D{{8ML(5`PQVTKDHV8.png

8. 单链表的查找(按位)

]AQCV(DG_$}S{7(S04C4)5S.png

9. 单链表的查找(按值)

JGVCXZU692)}2)MU}EY9DD0.png

10. 单链表的尾插法

TBL2R8)1S~HYYL~LHLJN41V.png

11. 单链表的头插法

  1. 核心思想就是固定在头结点的位置插入
  2. 头插法可以逆置链表

![D~$CPYX9LPCP%1M@UZPN.png

2.4 双链表

2.4.1 双链表的定义与基本操作

1. 双链表的初始化

~2X93QPY{1]M}HAY_DU(A$Y.png

2. 双链表的插入

D4]}HSK{_NUO6E7EKL$BCOQ.png

3. 双链表的删除

![}IAPY(FJIKVYE@~~X9S)BH.png

4. 双链表的销毁

C)5M`GNJ{GDNF44Y~$@J%WV.png

2.5 循环链表

2.5.1 循环链表的相关操作

9I3Y}@D_{H}S$]6J7I0%$H2.png

2.5.2 循环双链表的相关操作

LPSWK}AA%_5FA4%$9FBT`MB.png

2.5.3 循环链表的判空

![5UURW4[N(HYFKAC8)Z)S5O.png

2.6 静态链表

2.6.1 什么是静态链表

Y~_@ZFII0X3$7XTJJ(]JC`9.png

2.6.2 两种定义静态链表的方式

![S%AJFU_7HNZP)X~PJMOUE6.png

$JG5F_6~`]985L0I5D4Y725.png