欢迎来到天天文库
浏览记录
ID:48017561
大小:29.09 KB
页数:50页
时间:2020-01-18
《顺序表的基本操作.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、顺序表的基本操作/*sqList.h文件*/#defineLIST_INIT_SIZE50/*初始分配的顺序表长度*/#defineINCREM10/*溢出时,顺序表长度的增量*/#defineOVERFLOW1#defineOK0#defineERROR-1typedefintElemType;/*定义表元素的类型*/typedefstructSqList{ElemType*elem;/*存储空间的基地址*/intlength;/*顺序表的当前长度*/intlistsize;/*当前分配的存储空间*/}SqList;/*sqListOp.h文件*/#include"Sqlist.h"intI
2、nitList_sq(SqList&L);//顺序表创建函数定义voidFreeList_sq(SqList&L);//顺序表销毁函数定义intListInsert_sq(SqList&L,inti,ElemTypee);//在顺序表的位置i插入元素evoidPrintList_sq(SqList&L);//遍历并输出顺序表所有元素intListDelete_sq(SqList&L,inti,ElemType&e);//删除顺序表第i个元素的boolListEmpty(SqList&L);//判断顺序表是否为空intLocateElem_sq(SqListL,ElemTypee);//在顺序表
3、里查找出第1个与e相等的数据元素位置//已知线性表La和Lb的元素按值非递减排列//归并后的La和Lb得到新的顺序线性表Lc,Lc的元素也是按值非递减排列voidMergeList_sq(SqListLa,SqListLb,SqList&Lc);/*sqListOp.cpp文件*/#include#include#include#include"sqlistOp.h"//创建顺序表intInitList_sq(SqList&L){L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemTyp
4、e));if(!L.elem)exit(OVERFLOW);/*初始化失败,返回0*/L.length=0;/*置空表长度为0*/L.listsize=LIST_INIT_SIZE;/*置初始空间容量*/returnOK;/*初始化成功,返回1*/}/*InitList*///销毁顺序表voidFreeList_sq(SqList&L){if(L.elem)free(L.elem);printf("完成链表内存销毁");}//在顺序表的第i个位置之前插入新元素intListInsert_sq(SqList&L,inti,ElemTypee){intk;if(i<1
5、
6、i>L.length+
7、1)returnERROR;/*插入位置不合法*/if(L.length>=L.listsize){/*存储空间满,重新分配空间*/L.elem=(ElemType*)realloc(L.elem,(LIST_INIT_SIZE+INCREM)*sizeof(ElemType));if(!L.elem)returnOVERFLOW;/*存储分配失败*/L.listsize+=INCREM;/*修改存储空间大小*/}for(k=L.length-1;k>=i-1;k--){/*插入位置之后元素后移*/L.elem[k+1]=L.elem[k];}L.elem[i-1]=e;/*插入元素*/L.l
8、ength++;/*顺序表长度加1*/returnOK;}/*ListInsert*///遍历并输出顺序表所有元素voidPrintList_sq(SqList&L){if(!L.elem)return;inti=0;for(i=0;i9、10、i>L.length)returnERROR;/*删除位置不合法*/e=L.elem[i-1];for(k=i-1;k11、
9、
10、i>L.length)returnERROR;/*删除位置不合法*/e=L.elem[i-1];for(k=i-1;k
11、
此文档下载收益归作者所有