您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 线性表的顺序表示和实现
《数据结构与算法》实验报告实验1线性表的顺序表示和实现姓名:叶展望学号:Xb14680101时间:10.281、实验目的1.掌握线性表的动态分配顺序存储结构2.掌握线性表合并算法。2、实验内容已知顺序线性表La和Lb的元素按值非递减排列,归并La和Lb得到新的顺序线性表Lc,Lc的元素也按值非递减排列。(算法2.7)3、实验步骤:1.创建线性表La和Lb。2.合并La和Lb得到Lc。3.输出La、Lb、Lc。4、算法说明先建立LALB数据表在合并数据表成LC并排列顺寻5、测试结果6、分析与探讨合并两线性表时,数据元素按非递减排列7、附录:源代码《数据结构与算法》实验报告#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineINFEASIBLE-2#defineOVERFLOW-2typedefintStatus;typedefintElemType;#includeiostream.h#defineLIST_INIT_SIZE100#defineLISTINCREMENT10typedefstruct{ElemType*elem;intlength;intlistsize;}SqList;StatusInitList_Sq(SqList&L){L.elem=new(ElemType[LIST_INIT_SIZE*sizeof(ElemType)]);if(!L.elem)returnOVERFLOW;L.length=0;L.listsize=LIST_INIT_SIZE;returnOK;}StatusDestroyList_Sq(SqList&L){if(L.elem)delete(L.elem);L.elem=NULL;returnOK;}//DestroyList_SqElemType*realloc(SqListL){ElemType*p,*q,*r;p=new(ElemType[(L.listsize+LISTINCREMENT)*sizeof(ElemType)]);if(!p)returnNULL;q=p;r=L.elem;for(inti=1;i=L.length;i++){*q=*r;q++;r++;}deleteL.elem;returnp;}StatusListInsert_Sq(SqList&L,inti,ElemTypee){ElemType*p;if(i1||iL.length+1)returnERROR;if(L.length=L.listsize){ElemType*newbase=realloc(L);if(!newbase)returnERROR;L.elem=newbase;L.listsize+=LISTINCREMENT;}ElemType*q=&(L.elem[i-1]);for(p=&(L.elem[L.length-1]);p=q;--p)*(p+1)=*p;*q=e;++L.length;returnOK;}《数据结构与算法》实验报告StatusListInsert(SqList&L,ElemTypee){if(!L.length)L.elem[0]=e;inti=L.length;while(e=L.elem[i-1]&&i0){L.elem[i]=L.elem[i-1];i--;}L.elem[i]=e;L.length++;returnOK;}StatusMergeList_Sq(SqListLa,SqListLb,SqList&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=new(ElemType[Lc.listsize*sizeof(ElemType)]);if(!Lc.elem)returnOVERFLOW;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=pa_last)*pc++=*pa++;while(pb=pb_last)*pc++=*pb++;return(OK);1;}//MergeListvoidListTraverse_Sq(SqListL){inti;for(i=1;i=L.length;i++)coutL.elem[i-1];coutendl;}voidmain(){inti;SqListLa,Lb,Lc;ElemTypez1,z2;InitList_Sq(La);cout读入3个元素并插入到顺序表La中endl;for(i=1;i=3;i++){cinz1;ListInsert(La,z1);}cout顺序表La中所有元素如下:endl;ListTraverse_Sq(La);InitList_Sq(Lb);cout读入3个元素并插入到顺序表Lb中endl;for(i=1;i=3;i++){cinz2;ListInsert(Lb,z2);}cout顺序表Lb中所有元素如下:endl;《数据结构与算法》实验报告ListTraverse_Sq(Lb);MergeList_Sq(La,Lb,Lc);cout顺序表Lc中所有元素如下:endl;ListTraverse_Sq(Lc);}
本文标题:线性表的顺序表示和实现
链接地址:https://www.777doc.com/doc-4455826 .html