数据结构学习笔记·其三
线性表
线性表是具有相同特征的数据元素的一个有限序列。
特征:
- 只有一个开头,一个结尾
 - 元素具有相同特征
 
顺序存储结构
相当于数组的模式
顺序存储结构存在的问题:
- 存储空间分配不灵活
 - 运算的空间复杂度高
 
链式存储结构
在每个元素内存储与它相邻的两个元素的位置
线性表的操作(ADP)
- 初始化线性表
 - 销毁线性表
 - 清空线性表
 - 判断线性表是否为空
 - 获取表长度
 - 获取表的某个元素
 - 定位元素的位置
 - 获取当前元素的前驱/后驱
 - 插入元素
 - 删除元素
 - 遍历元素
 
线性表的顺序存储结构表示
顺序存储:
把逻辑上相邻的结构存储到物理上相邻的存储单元
顺序存储的特点:
- 占用连续的空间,中间不得出现空位置
 - 根据某个元素的位置可以推出其他元素的位置
 
顺序存储结构的定义:
- 最大长度
 - 数组长度
 - 元素
 
顺序存储结构操作方法:
- 初始化线性表
- 分配存储空间,分配失败返回错误
 - 设置length为0
 
 - 销毁线性表
- 释放存储空间,若数组不存在则返回-1
 
 - 清空线性表
- 设置length为0
 
 - 判断线性表是否为空
- length==0?return true:return false;
 
 - 获取表长度
- 返回length成员
 
 - 获取表的第i个元素
- 判断i是否合理
 - 返回L.elem[i-1];
 
 - 定位元素x的位置
- for(m,index in L){if(m=x){return index}};return -1;
 - 平均查找长度就是期望E(x);
 
 - 插入元素
- 判断插入位置是否合法
 - 判断空间是否已满
 - 将第n到第i个位置的元素从后到前依次位移来腾出空间(这一步占据了最多的时间)
 - 将新元素放在第i个位置
 - 表长加一
 
 - 删除元素
- 判断删除位置是否合法
 - 将第n到第i个位置的元素从前到后依次位移(这一步占据了最多的时间)有需要可以用一个变量接受被删除的元素,在之后作为返回值
 - 表长减一
 
 - 遍历元素