资源描述:
《c语言实现顺序表的基本操作》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、C语言实现顺序表的基本操作C语言实现顺序表的基本操作2009-09-1911:42:39
2、分类:C语言实现数据结
3、字号订阅头文件Sqlist1.h#include#include#include#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineOVERFLOW0#defineLIST_INIT_SIZE10//线性表存储空间的初始分配量#defineLISTINCREMENT2//线性表存储空间的分配增量typedefintStatus;typedefintE
4、lemType;typedefstructSqlist{ElemType*elem;//存储空间基址intlength;//当前长度intlistsize;//当前分配的存储容量}Sqlist;//常用函数voidInitList(Sqlist&L);//初始化线性表StatusListInsert(Sqlist&L,inti,ElemTypee);//向线性表中插入元素voidListTraverse(SqlistL,void(*visit)(ElemType&));//遍历L中的元素,并输出voidprint1(ElemType&e);//输出元素StatusListEm
5、pty(SqlistL);//判断表是否为空表voidClearList(Sqlist&L);//将表重置为空表intListLength(SqlistL);//返回L中元素的个数StatusGetElem(SqlistL,inti,ElemType&e);//用e返回L中第i个元素的值intLocateElem(SqlistL,ElemTypee,Status(*compare)(ElemType,ElemType));//返回L中第1个与e满足关系compare()数据关系的位序,如果这样的数据不存在刚返回值为了0Statusequal(ElemTypec1,ElemTy
6、pec2);//判断是否相等的函数StatusPriorElem(SqlistL,ElemTypecur_e,ElemType&pre_e);//若cur_e是L的数据元素,而且不是第一个,就用pre_e返回它的前驱SStatusNextElem(SqlistL,ElemTypecur_e,ElemType&next_e);//若cur_e是L的数据元素,而且不是最后一个,就用next_e返回它的后继StatusListDelete(Sqlist&L,inti,ElemType&e);//删除L的第i个元素,并用e返回其值,L的长度减1voidMergeList(Sqlist
7、La,SqlistLb,Sqlist&Lc);//归并la和lb得到新的顺序表lc,lc的元素也是按值非递减排列的voidInferList(SqlistLa,SqlistLb,Sqlist&Lc);voidDifferList(SqlistLa,SqlistLb,Sqlist&Lc);//实现两个集合的差集////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
8、////////////////////////////////函数文件function1.cpp#include"Sqlist1.h"#includevoidInitList(Sqlist&L)//构造一个空的顺序线性表L{L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));if(!L.elem)//存储分配失败exit(OVERFLOW);L.length=0;//空表长度为了0L.listsize=LIST_INIT_SIZE;//初始存储量}StatusListInsert(Sqlist
9、&L,inti,ElemTypee)//在L的第i个位置上插入新的数据元素e,L的长度加1{ElemType*newbase,*p,*q;if(i<1
10、
11、i>L.length+1)returnERROR;//i不合法if(L.length==L.listsize)//当前存储空间已满,增加分配{newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));if(!newbase)//存储分配失败exit(OV