/////////////////////////////////////////////////////////////---------------------------------------------------------//顺序存储结构线性表基本操作纯C语言实现////asimpleexampleofSq_ListbyClanguage////bywangweinoo1[PG]//---------------------------------------------------------///////////////////////////////////////////////////////////#include#include//以下为函数运行结果状态代码#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineINFEASIBLE-1#defineOVERFLOW-2#defineLIST_INIT_SIZE5//线性表存储空间的初始分配量#defineLISTINCREMENT1//线性表存储空间分配增量typedefintStatus;//函数类型,其值为为函数结果状态代码typedefintElemType;//假设数据元素为整型typedefstruct{ElemType*elem;//存储空间基址intlength;//当前长度intlistsize;//当前分配的存储容量}Sqlist;//实现线性表的顺序存储结构的类型定义staticSqlistL;//为了引用方便,定义为全局变量staticElemTypeelement;/////////////////////////////////////////函数名:InitList()//参数:SqListL//初始条件:无//功能:构造一个空线性表//返回值:存储分配失败:OVERFLOW//存储分配成功:OK///////////////////////////////////////StatusInitList(SqlistL){L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));if(L.elem==NULL)exit(OVERFLOW);else{L.length=0;L.listsize=LISTINCREMENT;returnOK;}}/////////////////////////////////////////函数名:DestroyList()//参数:SqListL//初始条件:线性表L已存在//功能:销毁线性表//返回值:L.elem==NULL:ERROR//L.elem!=NULL:OK///////////////////////////////////////StatusDestroyList(SqlistL){if(L.elem==NULL)returnERROR;elsefree(L.elem);returnOK;}/////////////////////////////////////////函数名:ClearList()//参数:SqListL//初始条件:线性表L已存在//功能:清空线性表//返回值:L.elem==NULL:ERROR//L.elem!=NULL:OK///////////////////////////////////////StatusClearList(SqlistL){if(L.elem==NULL)exit(ERROR);inti;ElemType*p_elem=L.elem;for(i=0;iListLength(L)):OVERFLOW//1<=i<=ListLength(L):OK///////////////////////////////////////StatusGetElem(SqlistL,inti){intj;ElemType*p_elem=L.elem;if(i<1||i>L.length)returnOVERFLOW;for(j=1;j<=i;j++)L.elem++;element=*L.elem;L.elem=p_elem;returnOK;}/////////////////////////////////////////函数名:LocateElem()//参数:SqlistL,ElemTypeelement//初始条件:线性表L已存在//功能:返回顺序表L中第1个与element相等的元素//返回值:若在L中存在于element相等的元素:其位序//若在L中不存在与element相等的元素:0///////////////////////////////////////intLocationElem(SqlistL,ElemTypeelement){inti;ElemType*p_elem=L.elem;for(i=1;i