顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素、使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系,采用顺序存储结构的线性表通常称为顺序表。
构造一个顺序表的过程
1.为线性表动态分配一组存储结构
#define list_init_size 100 //在这里设置线性表长度可以方便以后的修改 ,后续操作时,只要在这里改动,就可以修改整个顺序摆 的长度
#define listincrement 10
#define ok 1 //
#define overflow -1
#define error 0
typedef int status;
//线性表的动态分配线性存储结构
typedef struct {
int *elem; //存储空间基址 //这里的数据类型不仅是int,可以改为float,char等, elem是一个指针变量,可以指向一个数, 也 可以指向一个数组
int length; //当前长度
int listsize; //当前分配的存储容量
}sqlist; //sqlist此时就是一个新的数据类型标识符,类似于int,后面可以用它来声明一个顺序表
如要声明一个名叫l的顺序表,可以用语句sqlist l;
2.初始化顺序表
//构造一个空的线性表L
status initlist_sq(sqlist &l)
{
l.elem=(int *)malloc(list_init_size*sizeof(int)); // 分配一段长为4*100字节的连续的存储空间
if(!l.elem)
{
printf("线性表构造失败!\n");
exit(overflow); //存储分配失败
}
l.length=0; //添加数据之前,顺序表的长度记为0
l.listsize=list_init_size; //最大长度暂时设置为100,需要更改时可以在头文件中修改
printf("线性表构造成功!\n");
return ok;
}
3. //给顺序表插入元素
status listinsert_sq(