电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

归并La和Lb得到新的线性表Lc-(2)VIP免费

归并La和Lb得到新的线性表Lc-(2)_第1页
1/10
归并La和Lb得到新的线性表Lc-(2)_第2页
2/10
归并La和Lb得到新的线性表Lc-(2)_第3页
3/10
#include#include#defineLIST_INIT_SIZE100//初始化大小#defineLISTINCREMENT15#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineINFEASIBLE-1//不可实行的#defineOVERFLOW-2//溢出#include//exit()typedefintElemType;//基本(元素)类型typedefstruct{ElemType*elem;intlength;intlistsize;}SqList;intInitList(SqList*L)//操作结果:构造一个空的顺序线性表{(*L).elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));if(!(*L).elem)//存储分配失败exit(OVERFLOW);(*L).length=0;//空表长度为0(*L).listsize=LIST_INIT_SIZE;//初始存储容量returnOK;}intDestroyList(SqList*L)//初始条件:顺序线性表L已存在。操作结果:销毁顺序线性表L{free((*L).elem);(*L).elem=NULL;(*L).length=0;(*L).listsize=0;returnOK;}intClearList(SqList*L)//初始条件:顺序线性表L已存在。操作结果:将L重置为空表{(*L).length=0;returnOK;}intListEmpty(SqListL)//初始条件:顺序线性表L已存在。操作结果:若L为空表,则返回TRUE,否则返回FALSE{if(L.length==0)returnTRUE;elsereturnFALSE;}intListLength(SqListL)//初始条件:顺序线性表L已存在。操作结果:返回L中数据元素个数{returnL.length;}intGetElem(SqListL,inti,ElemType*e)//初始条件:顺序线性表L已存在,1≤i≤ListLength(L)。操作结果:用e返回L中第i个数据元素的值{if(i<1||i>L.length)exit(ERROR);*e=*(L.elem+i-1);returnOK;}intLocateElem(SqListL,ElemTypee)//初始条件:顺序线性表L已存在。操作结果:返回L中第1个与e相等的数据元素的位序。若这样的数据元素不存在,则返回值为0。{ElemType*p;inti=1;//i的初值为第1个元素的位序p=L.elem;//p的初值为第1个元素的存储位置while(i<=L.length&&(*p++!=e))++i;if(i<=L.length)returni;elsereturn0;}intPriorElem(SqListL,ElemTypecur_e,ElemType*pre_e)//初始条件:顺序线性表L已存在。操作结果:若cur_e是L的数据元素,且不是第一个,则用pre_e返回它的前驱,否则操作失败,pre_e无定义。{inti=2;ElemType*p=L.elem+1;while(i<=L.length&&*p!=cur_e){p++;i++;}if(i>L.length)returnINFEASIBLE;else{*pre_e=*--p;returnOK;}}intNextElem(SqListL,ElemTypecur_e,ElemType*next_e)//初始条件:顺序线性表L已存在。操作结果:若cur_e是L的数据元素,且不是最后一个,则用next_e返回它的后继,否则操作失败,next_e无定义{inti=1;ElemType*p=L.elem;while(i(*L).length+1)//i值不合法returnERROR;if((*L).length>=(*L).listsize)//当前存储空间已满,增加分配{newbase=(ElemType*)realloc((*L).elem,((*L).listsize+LISTINCREMENT)*sizeof(ElemType));if(!newbase)//存储分配失败exit(OVERFLOW);(*L).elem=newbase;//新基址(*L).listsize+=LISTINCREMENT;//增加存储容量}q=(*L).elem+i-1;//q为插入位置for(p=(*L).elem+(*L).length-1;p>=q;--p)//插入位置及之后的元素右移*(p+1)=*p;*q=e;//插入e++(*L).length;//表长增1returnOK;}intListDelete(SqList*L,inti,ElemType*e)//初始条件:顺序线性表L已存在,1≤i≤ListLength(L)。操作结果:删除L的第i个数据元素,并用e返回其值,L的长度减1{ElemType*p,*q;if(i<1||i>(*L).length)//i值不合法returnERROR;if((*L).length==0)//i值不合法returnERROR;p=(*L).elem+i-1;//p为被删除元素的位置*e=*p;//被删除元素的值赋给eq=(*L).elem+(*L).length-1;//表尾元素的位置for(++p;p<=q;++p)//被删除元素之后的元素左移*(p-1)=*p;(*L).length--;//表长减1returnOK;}voidMergeList(SqListLa,SqListLb,SqList*Lc)//算法2.2//已知线性表La和Lb中的数据元素按值非递减排列//归并La和Lb得到新的线性表Lc,L...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

归并La和Lb得到新的线性表Lc-(2)

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部