线性表地顺序存储结构实验报告材料

线性表地顺序存储结构实验报告材料

ID:47895806

大小:53.05 KB

页数:9页

时间:2019-10-20

线性表地顺序存储结构实验报告材料_第1页
线性表地顺序存储结构实验报告材料_第2页
线性表地顺序存储结构实验报告材料_第3页
线性表地顺序存储结构实验报告材料_第4页
线性表地顺序存储结构实验报告材料_第5页
资源描述:

《线性表地顺序存储结构实验报告材料》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实用标准南昌航空大学实验报告课程名称:数据结构实验名称:实验一线性表的顺序存储结构班级:XXX学生姓名:XXX学号:XXXXX指导教师评定:XXX签名:XXX设计并实现以下算法:有两张非递增有序的线性表A,B,采用顺序存储结构,两张表合并用C表存,要求C仍为非递增有序的,并删除C表中值相同的多余元素。一、需求分析⒈本程序中,要求输入到表A,B中的元素是整形的,并且要按非递增顺序输入,否则系统会给出“出错信息”。输出结果应该是一个不含有重复元素的非递增的表。⒉本程序以用户和计算机的对话方式执行,即在计算机演示界面上显示“提示信息”后,由用户在键盘上输入相应的信息;相应的输入数据和运算结果显示在

2、其后。⒊程序执行的命令包括:(1)构造线性表A(2)构造线性表B(3)检验表A,B是否非递减有序(4)求表A与B的合并(5)删除表中值相同的多余元素(6)结束。4.测试数据(1)A=123(2)A=950-2B=1050-1-3-5-10二、概要设计⒈为实现上述算法,需要线性表的抽象数据类型:ADTStack{数据对象:D={ai:

3、ai∈ElemSet,i=1…n,n≥0}数据关系:R1={

4、ai-1,ai∈D,i=2,…n}基本操作:init(list*L)操作结果:构造一个空的线性表L。InputList(List*L)初始条件:线性表L已经存在操作结果:人工输入了一

5、张表。CheckList(List*L)初始条件:线性表L已经存在操作结果:判断L是否非递增有序,若为否,则重新输入。MergeList(List*La,List*Lb,List*Lc)初始条件:非递增线性表La,Lb已经存在操作结果:合并La,Lb得到Lc,Lc仍按非递增有序排列。文案大全实用标准DeleteSame(List*L)初始条件:非递增线性表L已经存在操作结果:删除了L中值相同的元素。PrintList(ListL)初始条件:线性表L已经存在操作结果:打印出表L。}ADTList2.本程序有三个模块:⑴主程序模块voidmain(){初始化;do{接受命令;显示结果;}whil

6、e(执行完毕)}⑵线性表单元模块:实现线性表抽象数据类型;⑶结点结构单元模块:定义线性表中的结点结构。三、详细设计⒈元素类型,结点类型typedefintElemType;//元素类型structLIST{ElemType*elem;intlength;intlistsize;};typedefstructLISTlist;//结点类型2.对抽象数据类型中的部分基本操作的伪码算法如下:intinit(List*L){//初始化表LL→elem=(ElemType*)malloc(sizeof(ElemType)*LIST_INIT_SIZE);//为线性表顺序结构分配空间If(!L→elem

7、)exit(ERROR);L→length=0;L→listsize=LIST_INIT_SIZE;ReturnOK;}//initListvoidInputList(List*L){//构造表Lintflag=-32768;//输入结束的标志文案大全实用标准scanf("%d",&n);//输入元素while(n!=flag){//继续输入L→elem[j++]=n;L→length=j;Scanf("%d",&n);}}//InputListvoidCheckList(List*L){for(i=0;i

8、nputList(L);//输入为递增时,要重新输入i=0;}}//CheckListvoidMergeList(List*La,List*Lb,List*Lc){//表La和Lb合并为LcPa=La→elem;pb=Lb→elem;//pa,pb分别指向La,Lb的第一个元素Lc→Listsize=La→length+Lb→length;Lc→elem==(ElemType*)malloc(Lc→listsize*sizeof(ElemType));pc=Lc→elem;//pc指向表Lc的第一个元素pa_last=La→elem+La→length-1;//表La最后一个元素的地址pb_

9、last=Lb→elem+Lb→length-1;//表Lb最后一个元素的地址while(pa<=pa_last&&pb<=pb_last){//表La,Lb都未操作完时if(*pa<=*pb)*pc++=*pb++;else*pc++=*pa++;}while(pa<=pa_last)*pc++=*pa++;//将La的剩余部分接到Lcwhile(pb<=pb_last)*pc++=*pb++;//将Lb的

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

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

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