顺序表基本操作的实现

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

}



Snipaste_2023-07-22_17-29-33