顺序存储定义
线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。
顺序存储方式
由于线性表的每个数据元素的类型都相同,我们可以用一维数组来实现顺序结构存储,即把第一个数据元素存到数组下标为0的位置中,接着把线性表相邻的元素存储在数组中相邻的位置。
线性表的顺序存储结构代码如下:
#define MAXSIZE 20 // 存储空间初始分配量
typedef int ElemType; // ElemType 类型根据实际情况而定,这里假定为int
typedef struct {
ElemType data[MAXSIZE]; // 数组存储数据元素,最大值为MAXSIZE
int length; // 线性表当前长度
}SqList;
这里发现,描述顺序存储结构需要三个属性:
存储空间的起始位置:数组data,它的存储位置就是存储空间的存储位置
线性表的最大存储容量:数组长度MAXSIZE
线性表的当前长度:length
数组长度与线性表长度的区别
数组的长度是存放线性表的存储空间的长度,存储分配后这个量一般是不变的。
线性表的长度是线性表中数据元素的个数,随着线性表插入和删除操作而改变
在任意时刻,线性表的长度都应该小于等于数组的长度。
地址计算方法
假设占用的是c个存储单元,那么线性表中第i+1个数据元素的存储位置和第i个数据元素的存储位置满足下列关系(LOC表示获得存储位置的函数)
LOC(ai+1) = LOC(ai) + c
所以对于第i个数据元素 ai 的存储位置可以由 a1 推算得出:
LOC(ai) = LOC(a1) + (i - 1) * c