一、线性表的顺序存储结构-顺序表
顺序表:把线性表中的所有元素按照其逻辑顺序依次存储到从计算机存储器中指定存储位置开始的一块连续的存储空间中。
这样,线性表中第一个元素的存储位置就是指定的存储位置,第i+1个元素(1≤i≤n-1)的存储位置紧接在第i个元素的存储位置的后面。
假定线性表的元素类型为ElemType,则每个元素所占用存储空间大小(即字节数)为sizeof(ElemType),整个线性表所占用存储空间的大小为: n*sizeof(ElemType) 其中,n表示线性表的长度。
在定义一个线性表的顺序存储类型时,需要定义一个数组来存储线线表中的所有元素和定义一个整型变量来存储线性表的长度。 假定数组用data[MaxSize]表示,长度整型变量用length表示,并采用结构体类型表示,则元素类型为通用类型标识符ElemType的线性表的顺序存储类型可描述如下:
typedef struct {
ElemType data[MaxSize];
int length;
} SqList; //顺序表类型 其中data成员存放元素,length成员存放线性表的实际长度。
说明:由于C/C++中数组的下标从0开始,线性表的第i个元素ai存放顺序表的第i-1位置上。为了清楚,将ai在逻辑序列中的位置称为逻辑位序,在顺序表中的位置称为物理位序。
二、顺序表基本运算的实现
1. 建立顺序表
其方法是将给定的含有n个元素的数组的每个元素依次放入到顺序表中,并将n赋给顺序表的长度成员。
算法如下(使用指针的方法):
void CreateList(SqList *&L,ElemType a[],int n)
{ int i;
L=(SqList *)malloc(sizeof(SqList));
for (i=0;i<n;i++)