- 线性表的概念及运算
- 线性表的顺序存储
线性表
线性表(Linear List)是由n(n≥)个数据元素a1,a2,…,an组成的线性的有限序列。
线性表的逻辑结构:线性结构
- 除第一个元素外,其他每一个元素有且仅有一个直接前驱。
- 除最后一个元素外,其他每一个元素有且仅有一个直接后继。
线性表的相关术语
- 数据(Data): 是客观事物的符号表示,是所有能输入到计算机中并被计算机程序处理的符号的总称。
- 数据元素(Data Element): 是数据的基本单位,也称为元素、记录等,用于完整地描述一个对象。
- 数据项(Data Item): 是组成数据元素的、有独立含义的、不可分割的最小单位。
- 数据对象(Data Object): 是性质相同的数据元素的集合,是数据的一个子集。
线性表的特点
- 同一性: 线性表由同类数据元素组成,每一个必须属于同一数据对象。
- 有穷性: 线性表由有限个数据元素组成,表长
就是表中数据元素的个数。 - 有序性: 线性表中相邻元素之间存在着序偶关系<ai,ai+1>。
线性表的抽象数据类型定义
线性表的顺序存储-顺序表
指用一组地址连续的存储单元依次存储线性表中的各个元素,使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中。
- 即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系。
- 采用顺序存储结构的线性表通常称为顺序表。
- 假设线性表中有n个元素,每个元素占k个单元,第一个元素的地址为loc(a1),则可以计算出第i个元素的地址loc(ai):
-
loc(a~i~)=loc(a~1~)+(i-1)×k (其中loc(~1~)称为基址)
顺序表存储示意图
顺序存储结构的优缺点
优点
- 无需为表示结点间的逻辑关系而增加额外的存储空间,存储密度高
- 可方便地随机存取表中的任一元素
缺点
- 插入或删除运算不方便,除表尾的位置外,在表的其它位置上进行插入或删除操作都必须移动大量的元素,效率较低
- 由于顺序表要求占用连续的存储空间,存储分配只能预先进行静态分配。因此当表长变化较大时,难以事先确定合适的存储规模
//实现代码见下一篇文章