ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:122.71KB ,
资源ID:2154277      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2154277.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构课程设计 地铁建设问题.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构课程设计 地铁建设问题.docx

1、数据结构课程设计 地铁建设问题软 件 学 院课程设计报告书课程名称 数据结构 设计题目 地铁建设问题 专业班级 学 号 姓 名 指导教师 2013年 1 月1 设计时间.22 设计目的.23 设计任务.24 设计内容.24.1需求分析.24.1.1程序所能达到的功能.24.1.2输入、输出的形式和输入值的范围.24.1.3测试数据.34.2总体设计.34.2.1抽象数据类型定义.34.2.2主程序的流程、模块之间的调用关系.44.3详细设计.54.3.1 数据类型、函数的伪码算法.54.3.2函数的调用关系图.94.4测试与分析.104.4.1测试.104.4.2分析.114.5 附录.115

2、 总结与展望.16参考文献.17成绩评定.171 设计时间2012年1月21日2012年1月25日2 设计目的1.通过这次设计,在数据结构的逻辑结构和存储结构、数据结构的选择应用、算法的设计及其实现等方面加深对课程基本内容的理解2.训练程序设计方法以及上机操作等基本技能,积累编程经验3.培养用计算机解决实际问题的能力3 设计任务某城市要在各个辖区之间修建地铁,由于地铁建设费用昂贵,因此需要合理安排地铁建设线路,使市民可以沿地铁到达各个辖区,并使总费用最小。4 设计内容 4.1需求分析 4.1.1程序所能达到的功能 城市要在各个辖区之间修建地铁来加快经济发展,但由于建设地铁的费用昂贵,因此需要编

3、写程序合理安排地铁的建设路线,使乘客可以沿地铁到达各个辖区,并使总的建设费用最小。(1)使用结构体数组,存储辖区名称(2)建立辖区间直接距离的无向图,用邻接矩阵存储辖区间直接距离信息(2)根据读入的辖区距离信息,计算出应该建设哪些辖区的地铁路线(3)输出应该建设的路线,以及所需建设的总里程信息4.1.2输入、输出的形式和输入值的范围输出的形式和输入值的范围输入数字和字母,字母为辖区名,数字为辖区间直接距离,名称个数o, 0线路个数o(o-1),直接距离m,0m10000输出的形式1:辖区名 辖区名 路程2:辖区名 辖区名 路程3:辖区名 辖区名 路程总费用为:路程的和4.1.3测试数据正确输入

4、:辖区个数:4名称 a b c d 线路起止辖区及直接距离:a b 3、a c 5、a d 4、b c 2、b d 3、c d 2、0 0 0 开始辖区:a 输出为:1:a b 32:b c 23:c d 2总费用:7错误输入:辖区个数:4名称 a b c d 线路及之间距离:as b 3输出为:没有as 这个辖区4.2总体设计4.2.1抽象数据类型定义1抽象数据类型图的定义ADT Graph数据对象v:v是具有相同特性的数据元素的集合,成为顶点集。数据关系R: R=VR VR=|v,wV且P(v,w),表示从v到w的弧,谓词P(v,w)定义了弧的意义或信息 基本操作P: CreateGrap

5、h(&G,V,VR); 初始条件:V是图的顶点集,VR是图中弧的集合。 操作结果:按V和VR的定义构造图G。 ADT Graph4.2.2主程序的流程、模块之间的调用关系主程序的流程模块之间的调用关系(1)主函数main()调用int creatgraph(Graph *g)建立无向图,用邻接矩阵存储;(2)void MiniSpanTree_PRIM(Graph g,char a10)调用int minimun(struct tree *a,Graph g)和int locatevex(Graph *g,char a10)生成树,判断辖区名称输入是否正确;(3)主函数main()调用void

6、 MiniSpanTree_PRIM(Graph g,char a10) 计算最小生成树,输出最优线路和总里程。4.3详细设计4.3.1 数据类型、函数的伪码算法1结构体类型typedef struct char VM10; int RMM; int vexnum; Graph; 2函数算法创建无向图int locatevex(Graph *g,char a10) int i; for(i=0;ivexnum;i+) if(strcmp(a,g-Vi)=0) return i; if(i=g-vexnum) return -1; int creatgraph(Graph *g) int i=0

7、,j,m,k,p,o,e; char a10,b10; printf(设置辖区的个数: );/城市中辖区的个数 scanf(%d,&o); for(i=0;iVi); g-vexnum=o;for(i=0;ivexnum;i+) for(j=0;jvexnum;j+) g-Rij=INFINITY; printf(辖区之间的路程,以0 0 0为结束标志n); scanf(%s%s%d,a,b,&m); while(strcmp(0,a)!=0 | strcmp(0,b)!=0 | m!=0) k=locatevex(g,a); p=locatevex(g,b); if(k=-1) printf

8、(没有%s这个辖区n,a); return 0; if(p=-1) printf(没有%s这个辖区n,b); return 0; g-Rkp=g-Rpk=m; scanf(%s%s%d,a,b,&m); return 1; struct tree int weizhi; int lowcost;int minimun(struct tree *a,Graph g) int i,k,m=0; for(i=0;ig.vexnum;i+) if(m=0 & ai.lowcost!=0) m=1; k=i; if(m=1 & ai.lowcost!=0) if(ai.lowcostak.lowcost

9、) k=i; return k;普利姆算法求最小生成树,输出最优线路及费用void MiniSpanTree_PRIM(Graph g,char a10) struct tree closedgeM; int i,j,k,money=0; k=locatevex(&g,a); for(i=0;ig.vexnum;i+) if(i!=k) closedgei.lowcost=g.Rki; closedgei.weizhi=k; closedgek.lowcost=0; for(i=1;ig.vexnum;i+) k=minimun(closedge,g); money+=closedgek.lo

10、wcost; printf(%d:%s %s %dn,i,g.Vclosedgek.weizhi,g.Vk,closedgek.lowcost); closedgek.lowcost=0; for(j=0;jg.vexnum;j+) if(g.Rkjclosedgej.lowcost) closedgej.weizhi=k; closedgej.lowcost=g.Rkj; printf(总费用为:%dn,money);4.3.2函数的调用关系图4.4测试与分析4.4.1测试1正确的输入2错误的输入4.4.2分析 调试过程中遇到的问题及其解决方法 (1)问题: 用for循环语句控制输入辖区名称及输出辖区名称时候的个数名不对应解决方法: 数组下标时从零开始的,并且在 for 循环语句中,循环变量的执行次数总是比循环体的执行次数多一次,所以应该注意修改使其相对应 (2)问题:用循环控制各辖区及其之间的距离没有考虑清楚解决方法:用输入0 0 0 判定辖区及其直接距离数据输入完毕 (3)问题:普利姆算法理解不透彻,用其计算最小生成树输出结果的时候出现问题 解决方法:上网查阅资料及阅读课本询问同学,并在以前程序上加以修改,最终得以运行。4.5 附录#include #include #include #inc

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1