数据结构----第二章线性表1
注意:数据结构三要素--逻辑结构、数据的运算、存储结构(物理结构)
一、线性表的基本操作
Tips:对数据的操作(记忆思路)--创销、增删改查;
C语言函数的定义--<返回值类型>函数名(<参数1类型>参数1,<参数2类型>参数2,......)
实际开发中,可根据实际需求定义其他的基本操作
函数名和参数的形式、命名都可改变(命名要有可读性)
二、顺序表
1.顺序表的实现----静态分配
2.顺序表的实现---动态分配
顺序表的特点:1.随机访问,即可以在O(1)时间内找到第i个元素。代码实现:data[i-1];静态、动态分配都一样
2.存储密度高,每个节点只存储数据元素
3.拓展容量不方便(即便采用动态分配的方式实现,拓展长度的时间复杂度也比较高)
4.插入,删除操作不方便,需要移动大量元素
3.顺序表的插入删除
1)插入
注意位序、数组下标的关系,并从后面的元素依次移动
如果出现顺序表已经存满的情况,代码可以做如下修改
2)插入操作的时间复杂度
3)删除
4.顺序表的按位查找
5.顺序表的按值查找
三、单链表
一、单链表的定义
1.什么是单链表?
2. 用代码定义一个单链表
3.不带头结点的单链表
4.带头结点的单链表
5.不带头结点vs带头结点
二、单链表的插入与删除
1.按位序插入(带头结点)--平均时间复杂度:0(n)
2.按位序插入(不带头结点)
3.指定结点的后插操作
直接调用后插操作的函数就可以了
4.指定结点的前插操作
1)传入头指针
2)不传入头指针
5.按位序删除(带头结点)
6.指定结点的删除
如果不带头结点,删除第一个元素,是否需要特殊处理?
7.封装的好处
小功能模块化,代码逻辑清晰
三、单链表查找(基于带头结点的情况)
1.按位查找
2.封装(基本操作)的好处
避免重复代码,简洁,易维护
3.按值查找
4.求表的长度
四、单链表的建立
头插法,尾插法:核心就是初始化操作,指定结点的后插操作