




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构实验报告院_信息科学与工程学院_ 专业 _软件工程_ _2011 级 1103班 姓名_甘路唐_ 学号20111611093 2013年3月 30日1. 上机题目:顺序表的建立、合并、归并算法实现设有线性表LA=(3,5,8,11),LB=(2,6,8,9,11,15,20);要求用顺序表实现.(1)若LA和LB分别表示两个集合A和B,求新集合A=AB(相同元素不保留)预测输出LA=(3,5,8,11,2,6,9,15,20)(2)若LA和LB分别表示两个集合A和B,求新集合A=AB(相同元素保留)预测输出LA=(2,3,5,6,8,8,9,11,11,15,20)2. 需求分析该程序
2、通过结构体和顺序表实现对两个顺序表的合并和归并的功能。开发工具采用Visual C+6.0,具体要求如下:(1) 输入数据必须为int的整形数据,其数值范围为:-214748362147483647(2) 输出的数据格式为:%3d(3) 测试数据的数据为:3,5,8,11 2,6,8,9,11,15,20.3. 详细设计(1) 该程序采用顺序表的存储结构,其数据结构定义如下:#define maxsize 100typedef struct int datamaxsize; int length;sqlist;(2) 所用数据类型中每个操作的伪码算法如下:1) 初始化顺序表Program in
3、itlist(sqlist L)L.length=0End inlist2) 创建顺序表Program creatlist(sqlist L) int i,elem,n Input n For i=0 TO Input elem EndFor L.datai=elem End creatlist3) 归并顺序表Program megerlist(sqlist la,sqlist lb,sqlist *lc) int i=0,j=0,k=0 While(i<la.length AND j<lb.length) If(la.datai<=lb.dataj) Then lc->
4、;datak+=la.datai+ else lc->datak+=lb.dataj+ EndIf EndWhile While(i<la.length) lc->datak+=la.datai+; EndWhile While(j<lb.length) lc->datak+=lb.dataj+ EndWhile End megerlist4) 连接顺序表并删除顺序表中的相同元素Program connectlist(sqlist la,sqlist lb,sqlist *lc) int i,j,a,b,k=0; For i=0 To la.length lc-&
5、gt;datak+=la.datai EndFor For j=0 TO la.length lc->datak+=lb.dataj EndFor For a=1 TO a<=Lc.length For b=a+1 To b<=Lc.length If Lc.dataa-1=Lc.datab-1 Then For k=b To k<Lc.length Lc.datak-1=Lc.datak EndFor EndIf Lc.lengthEndFor EndFor End connectlist5) 输出顺序表 Program printlist(sqlist L) int
6、 i; For i=0 To i<L.length Outputl->datai EndFor End printlist4. 调试分析(1) 调试过程中遇到的问题与解决方法(一) 在megerlist(sqlist la,sqlist lb,sqlist *lc)中使用while(i<=la->length && j<=lb->length)和if(la->datai<=lb->dataj)不合法,将->改成.(二) 在creatlist(sqlist *l)中使用scanf("%d",l->
7、;datai),编译器提示内存指令错误,将其改为scanf("%d",&elem);l->datai=elem;(三) 在主函数中调用megerlist(sqlist la,sqlist lb,sqlist *lc)时写成megerlist( la, lb,lc),应将其改为megerlist( la, lb,&lc)(2) 经验和体会很多时候写的代码自己看上去没什么问题,实际上有很多小问题,写代码尤其要注意细节。调用函数式也要弄清实参和形参的传递关系,不能想当然。写程序的过程中如果卡住了就一定要请教一下同学,不要一错再错,也许一经过同学提醒就一下子懂
8、了,胜过你一直在那儿磨。5. 测试结果6. 附件见20111611093甘路唐.cpp7. 详细设计#include <stdio.h>#include <stdlib.h>#define maxsize 100typedef struct int datamaxsize; int length;sqlist;void initlist (sqlist &L)L.length=0;void creatlist(sqlist &L) int i,n; printf("请输入链表元素个数(0-%d):",maxsize); scanf(&
9、quot;%d",&n); printf("请输入链表元素 :"); for(i=0;i<n;i+) scanf("%d",&L.datai); L.length+; printf("n"); void megerlist(sqlist &La,sqlist &Lb,sqlist &Lc) int i=0,j=0,k=0; while(i<La.length && j<Lb.length) if(La.datai<=Lb.dataj) Lc.da
10、tak+=La.datai+; else Lc.datak+=Lb.dataj+; while(i<La.length) Lc.datak+=La.datai+; while(j<Lb.length) Lc.datak+=Lb.dataj+; Lc.length=La.length+Lb.length; void unionlist(sqlist &La,sqlist &Lb,sqlist &Lc) for(int i=0,k=0;i<La.length;i+,k+) Lc.datak=La.datai; for(int j=0;j<Lb.len
11、gth;j+,k+) Lc.datak=Lb.dataj; Lc.length=La.length+Lb.length; int a,b; for(a=1;a<=Lc.length;a+) for(b=a+1;b<=Lc.length;b+)if(Lc.dataa-1=Lc.datab-1)for(int k=b;k<Lc.length;k+)Lc.datak-1=Lc.datak;Lc.length-; void printlist(sqlist &L) int i; for(i=0;i<L.length;i+) printf("%3d",
12、L.datai); printf("n"); int main() sqlist La,Lb,Lc; printf("-初始化顺序表LA-n"); initlist ( La); creatlist( La); printf("-初始化顺序表LB-n"); initlist ( Lb); creatlist( Lb); printf("-LA和LB合并后为-n"); initlist ( Lc); unionlist( La, Lb, Lc); printlist(Lc); printf("-LA和LB归并后为-n"); initlist ( Lc); megerli
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度城市基础设施建设债权转让与融资合同
- 2025年度商铺转让三方合同附带品牌授权与培训支持
- 2025年度石料场生产承包环境保护与修复责任合同
- 2025年度教育培训机构兼职正式聘用教学合同
- 2025年度购房合同解除补偿协议范文
- 2025年度农村出租房租赁与农村养老服务业合作合同
- 二零二五年度股权代持协议书:文化娱乐股权代持与IP开发合作合同
- 2025年旅游行业现状分析:国内旅游人次预计达到63亿
- 2024-2025学年北京市二中高三上学期期中调研生物试卷
- 2025年吉林省吉林市单招职业适应性测试题库汇编
- 生活化教学在小学道德与法治课堂实践 论文
- 2024年江苏农林职业技术学院高职单招(英语/数学/语文)笔试历年参考题库含答案解析
- 腰脊神经后支痛课件
- 《商务数据分析》 课件 项目一 商务数据分析认知
- 加强锻炼预防疾病主题
- 心衰合并胸腔积液的护理Ppt
- 2023学年、2024学年临平区公办学校校方责任险投保采购项目招标文件
- 物流风险管理与应对策略
- 2024家政行业现状分析
- 英汉互译单词练习打印纸
- 冠状动脉粥样硬化性心脏病患者药物治疗管理路径专家共识2023版解读
评论
0/150
提交评论