两线性表的合并数据结构实验报告_第1页
两线性表的合并数据结构实验报告_第2页
两线性表的合并数据结构实验报告_第3页
两线性表的合并数据结构实验报告_第4页
两线性表的合并数据结构实验报告_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、站昌航空大学卖验报告课程名称:数据结构班级:指导教师评定:签实验名称:学生姓名:名:实验一线性表的顺序存储结构学号:题目:有两张非递减有序的线性学生表A,B,采用顺序存储结构,两张表合并用c表存,要求C仍为非递减有序的,并删除C中值相同的表。一、需求分析用户可以根据自己的需求分别输入两个整型的线性表,有必要的话可以通过源程序改变是否为整型,再进行输入。程序执行的命令包括:构造线性表A(2)构造线性表B(3)求两张表的并(4)删除C中值相同的元素(5)将己合并的线性表进行逆序排列二、概要设计为实现上述算法,需要线性表的抽象数据类型:ADTStack数据对象:D=ai:aiWElemSet,i二1

2、n,n$0数据关系:Rl=|ai-i,aiGD,i=2,n$0基本操作:initlist(&L)操作结果:构造一个空的线性表LListLength(L)初始条件:线性表L已经存在操作结果:返回L中数据元素的个数。LocateElem(List*La,ElemTypee,inttype)初始条件:线性表La已经存在操作结果:判断La中是否有与e相同的元素。MergeList(La,Lb,&Lc)初始条件:非递减线性表La,Lb已经存在操作结果:合并La,Lb得到Lc,Lc仍按非递增有序排列。UnionList(List*La,List*Lb)初始条件:线性表La,Lb已经存在操作结果:将所有在L

3、b而不在La中的元素插入到La中表尾的位置。PrintList(L)初始条件:线性表L已经存在操作结果:打印出表L。Listlnsert(List*L,inti,structSTUe)初始条件:线性表L已经存在,1WiWListLength(&L)+l操作结果:在表L中第i个位置前插入元素e,L的长度加1。ADTList本程序有三个模块:主程序模块mainO初始化;接受命令;显示结果:线性表单元模块:实现线性表抽象数据类型;结点结构单元模块:定义线性表中的结点结构。三、详细设计1元素类型,结点类型typedefstructsqlistint*a;intlength;intlistsize;sq

4、list;sqlistla,lb,lc;sqlistinitlist()sqlist1;1a=(int*)malloc(listinitsize*sizeof(int);if(!l.a)exit(OVERFLOW);1length二0;1.listsize=listinitsize;:return1;2.对抽彖数据类型中的部分基本操作的伪码算法如卞:sqlistaddlist(sqlistla,sqlistlb,sqlistlc)/*合并两顺序表*/inti二1,j=l,k=l;while(i=la1ength&j=lb1ength)if(la.ai=lb.aj)lc.ak=lbai;i+;k

5、+;elselcak=laaj;j+;k+;while(i=lalength)lc.ak=laaLi;k+;i卄;while(j=lblength)lcak=lbaLj;k+;j卄;lc.gth=kl;returnlc;voidprintlist(sqlist1)inti=l;for(i=l;i0)j二0;for(i=l;iLlength;i+)k二0;while(k=j&Lak!=Lai)k+;if(k=j+l)L.aj+=L.ai;Llength二j;returnL;/*删除线性表中的相同的元素*/sqlistchange(sqlist1)inti,t;for(i=l;i#includem

6、alloch#definelistinitsize100#defineOVERFLOW-1/*线性表的定义*/typedefstructsqlistint*a;intlength;intlistsize;sqlist;sqlistla,lb,lc;/*建立一个空表*/sqlistinitlist()sqlist1;1a=(int*)malloc(listinitsize*sizeof(int);if(!l.a)exit(OVERFLOW);1.length二0;1.listsize=listinitsize;return1;sqlistcreatlist(sqlist1,intnum)intj

7、;intp;for(j=l;j=num;j+)scanf&p);laaj二p;la.length+;/*合并两线性表*/sqlistaddlist(sqlistla,sqlistlb,sqlistlc)inti二1,j=l,k=l;while(i=la1ength&j=lb1ength)if(la.ai=lb.aj)lc.ak=lbai;i+;k+;elselc.ak=laaj;j+;k+;while(i=lalength)lc.ak=laaLi;k+;i卄;while(j=lblength)lcak=lbaLj;k+;j+;lc.1己11gth=kl;returnlc;/*打印线性表*/vo

8、idprintlist(sqlist1)inti=l;for(i=l;i0)j二0;for(i=l;iLlength;i+)k二0;while(k=j&L.ak!=L.ai)k+;if(k=j+l)L.aj+=L.ai;Llength二j;returnL;/*将线性表进行逆序排列*/sqlistchange(sqlist1)inti,t;for(i=l;i=l.length/2;i+)t二1ai;1ai二1.allengthi;1.allength一i二t;return1;/*主函数*/mainOintnum,numO;intp;inti,j;la=initlist0;lb=initlist();lc=initlist0;printf(PleaseinputthenumlbersofyouwantalboutLa:);scanf(,z%d,z,&num);printf(n);creatlist(la,num);printf(,znPleaseinputthenumlbersofyouwantalboutLb:);scanf(,z%d,z,&numO);printf(n);creatlist(lb,numO);printf(Thel

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论