数据结构-线性表
2、线性表
2.1线性表的定义和基本操作






2.2 顺序表的定义


顺序表的实现——静态分配
静态实现,定义固定大小的数组

初始化时如果没有进行赋值,可能会读取到内存中遗留下来的”脏数据“
声明一个类型,默认对其进行赋值初始化是编译器,如果更换编译器,结果不一

思考:如果“数组”内存满了怎么办?
提前定义大容量内存,势必造成资源的浪费
malloc()返回整块内存地址空间的起始地址



小结

2.3 顺序表的相关操作
顺序表的插入


代码优化
- 传入参数是否合法
- 数组本身是否满额,无法插入

插入操作的时间复杂度

顺序表的删除

删除操作复杂度

小结-1

顺序表的查找






2.3 单链表的定义

什么是单链表



不带头结点的单链表

带头结点的单链表


小结-1

单链表的插入

按位序插入 i=1,3,6



指定节点的后插操作






单链表的查找
带头结点的单链表的查找,按位查找,按值查找


小结-2

单链表的建立
尾插法
方法1:(不推荐)
头插法
总结:
头插法、尾插法核心是初始化操作、指定结点的后插操作。头插法可用于链表的逆置。
2.4 双链表
由于单链表不利于查找前驱结点,进行删除。提出了在每个结点中增设前驱指针的双链表
初始化
插入
删除
遍历
总结
2.5 循环链表
双链表的插入???
删除
2.6 静态链表
定义:
初始化:
查找/删除:
总结:
静态链表:用数组的方式实现的链表
优点:增、删操作不需要大量移动元素
缺点:不能随机存取,只能从头结点开始依次往后查找:容量固定不可变
适用场景:
- 不支持指针的低级语言
- 数据元素数量固定不变的场景(操作系统的文件分配表FAT)
2.7 顺序表VS链表
逻辑结构:
线性结构,线性表
存储结构:
- 顺序表(顺序存储)
- 优点:支持随机存取,存储密度高
- 缺点:大片连续空间分配不方便,改变容量不容易
 
- 链表(链式存储)
- 优点:离散小空间分配方便,改变容量方便
- 缺点:不可以随机存取,存储密度低
 
基本操作:
创销


增删盖查
应用场景:
如果是存储数据长度固定,查询操作为高频操作,可以考虑使用顺序表
如果数据长度未知,增删操作频繁,优先推荐链表

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号