线性表、堆栈、链表c语言程序

线性表、堆栈、链表c语言程序

ID:35451588

大小:57.87 KB

页数:8页

时间:2019-03-24

线性表、堆栈、链表c语言程序_第1页
线性表、堆栈、链表c语言程序_第2页
线性表、堆栈、链表c语言程序_第3页
线性表、堆栈、链表c语言程序_第4页
线性表、堆栈、链表c语言程序_第5页
资源描述:

《线性表、堆栈、链表c语言程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、#include#include#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineINFEASIBLE-1#defineOVERFLOW-2#defineL1ST_1NIT_S1ZE100#defineLISTINCREMENT10typedefintElemType;typedefiniStatus;typedefstruct{ElemType*elem;intlength;//当前线性表长度intlistsize;//线性表的

2、最大长度}SqList;〃初始化线性表,引用就是别名,用&表示,来自于C++StatuslnitList_Sq(SqList&L){〃分配了一个空线性表的总的空间,返回值为1表示分配成功,否则失败返回0L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));//ElemTypeelem[100];if(!L.elem){exit(OVERFLOW);}〃空线性表L.length=0;〃线性表容量L.listsize=LIST_INIT_SIZE;returnOK;}/

3、/在顺序线性表L的第i个元素之前插入新的元素e,StatusListlnsert_Sq(SqList&L,inti,ElemTypee){//算法2.4〃i的合法值为lWiWListLength_Sq(L)+lElemType*p;if(i<1

4、

5、i>L.length+1){returnERROR;〃i值不合法}if(L.length>=L.listsize){//当前存储空间已满,增加容量ElemType*newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)

6、*sizeof(ElemType));if(Inewbase){returnERROR;//存储分配失败}L.elem=newbase;//新基址L.listsize+二LISTINCREMENT;//增加存储容量}ElemType*q=&(L.elem[i-1]);//q为插入位置for(p=&(L.elem[L」ength・l]);p>=q;-p){*(p+l)=*p;//插入位置及之后的元素右移}*q=e;//插入e++L.length;//表长增1returnOK;)//ListInsert_Sq//在顺序线性表L中删

7、除第i个元素,并用e返回其值。StatusListDelete_Sq(SqList&L,inti,ElemType&e){//算法2.5〃i的合法值为1WiWListLength_Sq(L)。ElemType*p,*q;if(i

8、

9、i>L.length){returnERROR;〃i值不合法)p=&(L.elem[i-1]);〃p为被删除元素的位置e=*p;//被删除元素的值赋给eq=L.elem+L.length-1;//表尾元素的位置for(++p;p<=q;++p)*(p-l)=*p;//被删除元素之后的元素左移-L

10、.length;//表长减1returnOK;}//ListDelete_Sq//已知顺序线性表La和Lb的元素按值非递减排列。voidMergeList_Sq(SqListLa,SqListLb,SqList&Lc){//算法2.7//归并La和Lb得到新的顺序线性表Lc,Lc的元素也按值非递减排列。ElemType*pa,*pb,*pc,*pa_last,*pb_last;pa=La.elem;pb=Lb.elem;Lc.listsize=Lc.length=La.length+Lb.length;pc=Lc.elem=(

11、ElemType*)malloc(Lc」istsize*sizeof(ElemType));if(ILc.elem){exit(OVERFLOW);//存储分配失败}pa_last=La.elem+La.length・1;pb_last=Lb.elem+Lb.length-1;while(pa<=pa_last&&pb<=pb_last){//归并if(*pa<=*pb){*pc++=*pa++;}else{*pc++=兴pb++;}}while(pa<=pajast){*pc++=*pa++;//插入La的剩余元素}whil

12、e(pb<=pb」ast){*pc++二*pb++;//插入Lb的剩余元素}}//MergeList〃线性表遍历voidTranverseList_Sq(SqList&L){for(intcounter=0;counter

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。