一.顺序表的示意图
#define LIST INIT SIZE 100 //线性表存储空间的初始分配量;就是数组多大,这里定义了100
typedef struct{
Elem Type elem[LIST INIT SIZE];
//用一维数组来装数据元素,这里是Elem类型,也可以是别的类型
int length; //当前长度
}SqList;
这个就相当于定义了一个顺序表 L,它是一个SqList型的变量,其中我们可以根据定义来画出其示意图:
注意:1.数组是从a0开始的,所以开辟100个空间,就要到a99,绿色部分是开辟的数组空间;蓝色的部分是开辟的存储长度变量的部分。
2.对于普通变量来说其引用成员的写法如图,对于指针型来说应写成L->elem这样的
二.顺序表的基本函数状态代码
就是当结果是true、ok时,电脑运行返回的是1;当结果是false、error时,返回的结果是0,infeasible时是-1;overflow是-2;
三.顺序表中重要的操作
1.先行标的初始化、摧毁、清空求长度、判断是否为空(基本操作)
❶ 线性表L的初始化
Status InitList_Sq(SqList&L){ //构造一个空的顺序表
L.elem=new Elem Type[MAXSIZE]; //为顺序表分配空间
if(!L.elem) exit(OVERFLOW);
//如果不存在“线性表的成员”(存储空间分配失败),返回overflow,即-2
L.length=0; //空表长度为0
return OK; //
}
❷ 摧毁一个线性表(注意摧毁不会清空) ;清空线性表
//摧毁线性表
void DestroyList(SqList & L){
if(L.elem) delete L.elem; //如果是线性表单元就删除他,即释放空