1、/ /- / 顺序存储结构线性表基本操作 纯 C 语言实现 / / a simple example of Sq_List by C language / / by wangweinoo1PG /- / #include #include /以下为函数运行结果状态代码 #define TRUE 1#define FALSE 0#define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 #define LIST_INIT_SIZE 5 /线性表存储空间的初始分配量 #define LISTINCREMENT 1 /
2、线性表存储空间分配增量 typedef int Status; /函数类型,其值为为函数结果状态代码 typedef int ElemType; /假设数据元素为整型 typedef struct ElemType *elem; /存储空间基址 int length; /当前长度 int listsize; /当前分配的存储容量 Sqlist; /实现线性表的顺序存储结构的类型定义static Sqlist L;/为了引用方便,定义为全局变量static ElemType element;/函数名:InitList()/参数:SqList L/初始条件:无/功能:构造一个空线性表/返回值:存储
3、分配失败:OVERFLOW/ 存储分配成功:OK/Status InitList(Sqlist L)L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType);if(L.elem=NULL)exit(OVERFLOW);elseL.length=0;L.listsize=LISTINCREMENT;return OK;/函数名:DestroyList()/参数:SqList L/初始条件:线性表 L 已存在/功能:销毁线性表/返回值:L.elem=NULL:ERROR/ L.elem!=NULL:OK/Status DestroyList(
4、Sqlist L)if(L.elem=NULL)return ERROR;elsefree(L.elem);return OK;/函数名:ClearList()/参数:SqList L/初始条件:线性表 L 已存在/功能:清空线性表/返回值:L.elem=NULL:ERROR/ L.elem!=NULL:OK/Status ClearList(Sqlist L)if(L.elem=NULL)exit(ERROR);int i;ElemType *p_elem=L.elem;for(i=0;iListLength(L) :OVERFLOW/ 1L.length)return OVERFLOW;f
5、or(j=1;j1for(j=1;j=1for(j=1;j(L.length+1)return ERROR;if(L.length=L.listsize)newbase=(ElemType*)realloc(L.elem,L.listsize+LISTINCREMENT*sizeof(ElemType);if(newbase=NULL)exit(OVERFLOW);L.elem=newbase;L.listsize+=LISTINCREMENT;for(p=p=q;-p)*(p+1)=*p;*q=e;+L.length;return OK;/函数名:ListDelete()/参数:SqList L,int i,Elemtype e/初始条件:线性表 L 已存在,1L.length)return ERROR;ElemType *p,*q;p=e=*p;q=L.elem+L.length-1;for(+p;p=q;+p)*(p-1)=*p;-L.length;return OK;