顺序表基本操作的实现
1.1 线性表L的初始化
Status InitList_ Sq(SqList &L){ //构造一个空的顺序表L
L.elem=new ElemType[MAXSIZE]; //为顺序表分配空间
if(!L.elem)exit(OVERFLOW); //存储分配失败
L.length=0; //空表长度为0
return OK;
}
elem里面若是空值,即为0,则取反为1,调用If语句。
补:操作算法中用到的预定义常量和类型
//函数结果状态代码
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
//Status 是函数的类型,其值是函数结果状态代码
typedef int Status;
typedef char ElemType;
1.2 销毁线性表L
void DestroyList(SqList &L){
if (L.elem) delete L.elem; //释放存储空间
}
1.3 清空线性表
void ClearList(SqList &L){
L.length=0; //将线性表的长度置为0
}
1.4 求线性表长度
int GetLength(SqList L){
return (L.length);
}
1.5 判断线性表是否为空
int IsEmpty(SqList L){
if (L.length==0)return 1;
else return 0;
}
1.6 顺序表的取值
int GetElem(SqList L,int i,ElemType &e){
if (i<1||i>L.length)return ERROR;
//判断i值是否合理,若不合理,返回ERROR
e=L.elem[i-1]; //第i-1的单元存储着第i个数据
return OK;
}
1.7 顺序表的查找
int LocateELem(SqList L,ElemType e){
//在线性表L中查找值为e的数据元素,返回其序号(是第几个元素)
for (i=0;i<L.length;i++)
if(L.elem[i]=三e)return i+1;//查找成功,返回序号
return 0;//查找失败,返回0
}