《数据结构实验报告-顺序表的创建、遍历及有序合并操作.docx》由会员分享,可在线阅读,更多相关《数据结构实验报告-顺序表的创建、遍历及有序合并操作.docx(11页珍藏版)》请在优知文库上搜索。
1、数据构造实验报告-顺序表的创立、遍历及有序合并操作二、实验容与步骤实现顺序表的创立、遍历及有序合并操作,根本数据构造定义如下:typedefintElemType;*defineMA*SIZE100MefineFALSEO*defineTRUE1typedefstructElemTypedataMA*SIZEl;intlength;)seqlist;创立顺序表,遍历顺序表*include*include*defineMA*SIZE100*definelcreament2*detneFALSEOMefineTRUElIypedefintElemType;/用户自定义数据元素类型顺序表构造体的定义
2、typedefstructElemType*elem;/顺序表的基地址intlength;/顺序表的当前长度intlistsize;/预设空间容量SqList;/线性表的顺序存储构造SqLiSt*InitListO创立空的顺序表(SqList*L=(SqLiSt*)InallOCLiZeOf(SqLiSt)碇义顺序表Lif(!L)(空间划分失败,程序退出returnNULL;1.-elem=(ElemType*)malloc(MA*SIZE*sizeof(ElemType);if(!L-elem)(空间划分失败,程序退出returnNULL;)1.-length=O;1.-listsize=M
3、A*SIZE;intCreateList(SqList*L)创立顺序表(非空)intnumber;顺序表中元素的个数inti;/循环变量请输入顺序表中元素的个数:if(numberMA*SIZE)一定要判断输入的个数是否大于顺序表的最大长度(输入个数大于顺序表的长度retum;for(i=O;ielem+i:每次的输入都保存在顺序表元素中的下一个地址,而不是向来放在元素的首地址/给顺序表中每一个数据元素赋值1.-length=number;/当前顺序表的长度VOidPint(SqLiSl*L)遍历Jl版序表inti;开场遍历顺序表fbr(i=O;ilength;i+)(+i)jLelem+i:
4、和输入是一个道理)遍历完毕)intmain(SqList*L=InitlJSt0;申请一个指向顺序表的指针,并对其初始化if(!L)/判断申请是否成功(初始化线性表失败return1;if(!CneateList(L)判断创立顺序表是否成功创立顺序表失败return1;pri11t(L);/打印顺序表与上面遍历顺序表相对应,假设没有就不遍历fe(L-elem);/释放申请的顺序表元素的存fe(L);/释放申请的顺序表存retm;)表的有序合并*include*include*defineMA*SIZE100typedefintElemType;/顺序表构造体的定义typedefctructEl
5、emTypedataMA*SIZE;intsize;)seqlist;函数声明voidinit(seqlist*slt);VoiddispIay(Seqlistslt);VOidSOrt(SeqIiSt*s);voidbine(seqlist*sl,seqlist*s2,seqlist*s3);/顺序表的初始化函数VOidinit(SeqliSt*slt)(slt-size=O;)/顺序表的显示函数Voiddisplay(Seqlistslt)(inti;if(!sltsize)(顺序表为空)elsefor(i=O;isltsize;i+)顺序表排序voidsort(seqlist*s)int
6、i;i11tj;inttemp;for(i=O;isize-l;i+)(for(j=iljsizey+)(if(s-datai=s-dataj)temjF=s-datai;s-datai=s-dataj;s-dataj=temp;两个有序顺序表连接函数voidbine(seqlist*sl,seqlist2,seqlist*s3)fQwpZS=W啊YES(azsp3iq)(9ZIS-IS=l)jl(f+(t+f:照叩修二闻唧S)sp(:+!也唧S=闻啊S)(11wMW平派)(9zisOZISI)911qM0=uo=r0=!Rk+;j+;)if(j=s2-size)(while(isize)(s
7、3-datak=s1-datai;k+;i+;)s3-sizeF=k;)主函数intmai11O(inti;intj;int*;intn;Seqlistlistl;seqlistlist2;seqlistlist3;init(listl);第一个顺序表元素个数:第一个顺序表输入:for(i=O;in;i+)(IistLsize+;)SOrt彼一个表排序init(list2);第二个顺序表元素个数:第二个顺序表输入:for(i=0n+)list2.size+;soit(&list2)第二个表排序init(lis);bine(&listl,&list2,&list3);表一与表二连接后display(lis);retum;