一、线性表的定义和特点
1.线性表是具有相同特性的数据元素的一个有限序列
2.线性表由n(n>=0)个数据元素(结点)a1,a2,...an组成的有限序列
* 其中数据元素的个数n定义为表的长度
* 当n=0时称为空表
* 将非空的线性表(n>0)记作:(a1,a2,...an)
* 这里的数据元素ai(1<=i<=n)只是一个抽象的符号,其具体含义在不同的情况下可以不同
3.同一线性表中的元素必定具有相同特性,数据元素间的关系是线性关系
4.线性表的逻辑特征:
* 在非空的线性表,有且仅有一个开始结点a1,它没有直接前驱,而仅有一个直接后继a2
* 有且仅有一个终端结点an,它没有直接后继,而仅有一个直接前驱an-1
* 其余的内部结点ai(2<=i<=n-1)都有且仅有一个直接前驱ai-1和一个直接后继ai+1
5.顺序存储结构存储空间分配不灵活、运算的空间复杂度高
6.线性表中数据元素的类型可以为简单类型,也可以为复杂类型
7.从具体应用中抽象出共性的逻辑结构和基本操作(抽象数据类型),然后实现其存储结构和基本操作
8.在计算机内,线性表有两种基本的存储结构:顺序存储结构和链式存储结构
二、线性表的顺序存储表示(顺序表)
1.线性表的顺序表示又称为顺序存储结构或顺序映像
2.顺序存储定义: 把逻辑上相邻的数据元素储存在物理上相邻的存储单元中的存储结构
3.线性表的第1个数据元素的存储位置,称作线性表的起始位置或基地址
4.线性表顺序存储结构占用一片连续的存储空间
// 知道某个元素的存储位置就可以计算其他元素的存储位置
5.顺序表的特点:以物理位置相邻表示逻辑关系,任意元素均可随机存取
例: 图书表的顺序存储结构类型定义
#define MAXSIZE 10000 //图书表可能达到的最大长度
typedef struct{ //图书信息定义
char id[20]; //图