线性表的顺序储存(向量存储):指的是用一组地址连续的存储单元一次存储线性表的数据元素。
由于线性表的所有数据元素均属同一类型,所以每个元素在存储器中占用的空间大小相同。假设向量的第一个元素存放的地址用LOC(A1)表示,每个元素占用的空间大小为L个字节,则元素Ai的存放地址为:
LOC(Ai)=LOC(A1)+L X (i-1)
在高级语言环境中,通常利用数组来表示线性表的顺序存储结构。,这是因为数组中所有元素的数据类型是相同的,元素间的地址是连续的。
为更好体现信息隐蔽原则及数据抽象原则,在这里把数组和线性表的长度封装在一个结构体中。
//------------------------线性表的动态分配顺序存储------------------------------------------------------------------
#define LIST_INT_SIZE 100//线性表存储空间的初始分配量
#define LIST_INT_SIZE 10//线性表存储空间的分配增量
typedef struct{
ElemType * elem //存储空间地址
int length //当前长度
int listsize //当前分配的存储容量,以sizeof(ElemType)为单位
}Sqlist
说明:数据指针elem表示线性表的基地址,length表示线性表的当前长度,listsize表示顺序表当前分配的存储空间大小。一旦因出入元素而空间不足时,可以进行在分配。
向量中基本运算的实现。
1、初始化,长度为零,表中没有数据元素。
SeqList InitList_Seq(){//构造一个空的线性表L
SeqList L;//定义一个顺序表
L.length=0;//顺序表的长度为0
return L;//返回空顺序表
}//InitList_Seq