完整word版数据结构医院选址问题word文档良心出品.docx
- 文档编号:6803364
- 上传时间:2023-01-10
- 格式:DOCX
- 页数:18
- 大小:48.47KB
完整word版数据结构医院选址问题word文档良心出品.docx
《完整word版数据结构医院选址问题word文档良心出品.docx》由会员分享,可在线阅读,更多相关《完整word版数据结构医院选址问题word文档良心出品.docx(18页珍藏版)》请在冰豆网上搜索。
完整word版数据结构医院选址问题word文档良心出品
课程设计报告书
课程名称数据结构
设计题目社区医院选址问题
专业班级***************************
学号****
姓名***
指导教师****
计算机科学与技术专业教研室.
设计目的:
1数据结构是计算机科学与技术、信息管理专业的重要的专业基础课,是计算机系统软件和应用软件开发的重要理论和技术。
本次课程设计内容主要用到图的结构。
所以课程设计目要求掌握图的理论、图的邻接矩阵存储方式、顶点对这间的最短路径算法设计、及图在实践中的简单应用。
设计任务:
2已知有向图,图中各顶点代表居民区,有向边代表交通路。
要在居民区建立一家医院。
要求各居民区到医院的公里)线。
权表示路程(路径尽可能短,请设计医院建在哪个居民区比较合适。
4
0
3
4
3
13
13
1212
4
6
5
2
1
15
:
3设计内容图中各顶点代表居民区,边上的权代表各居民区的路程。
要解决选地址问题,必须确定最短路径。
求各顶点到其它顶点的最短路径,并求各居民区之间往返路径的和。
对各居民区的最短路径和进行比较,和最小的对各居民区的最采用顶点对之间最短路径算法,问题的实现则为首选地址。
1
短路径进行计算。
:
求出邻接矩阵1
2:
求出邻接表3:
求出最短路径的邻接矩阵4:
求各顶点到其它顶点的最短路径的和:
求出其它顶点到各顶点的最短路径的和5:
求出往返最短路径的和6:
对各居民区的最短路径和进行比较,和最小的则为首选地址7。
结果分析:
4
这步是输入数据
输出邻接矩阵for(i=0;i { for(intj=0;j { cout< } 2 cout< } cout< 输出邻接表for(i=0;i { for(j=0;j { if(i! =j) { intnext=t.path[i][j]; cout< ;< } } cout< } 输出最短路径的邻接矩阵for(i=0;i { for(j=0;j { ;cout< } cout< } 3 输出点到所有点的路程的和for(i=0;i { sum1[i]=0; for(intj=0;j { if(i! =j) { cout< ; intnext=t.path[i][j]; cout< while(next! =i) { cout<<<--< next=t.path[i][next]; } cout<<<--< sum1[i]+=t.a[i][j]; } } < 点潣瑵? ? 椼? } 4 逆输出所有点到点路径的和for(i=0;i { sum2[i]=0; for(j=0;j { if(i! =j) { cout< ; intnext=t.path[j][i]; cout< while(next! =j) { cout<<<--< next=t.path[j][next]; } cout<<<--< } sum2[i]+=t.a[j][i]; } < ? 椼? 潣瑵? 所有的点到} 5 输出所有点往返路程的和for(into=0;o { sum3[o]=sum1[o]+sum2[o]; < 漼? 的往返路程的和为: 潣瑵? 点} min=sum3[0]; for(inth=0;h { if(sum3[h]<=min) { min=sum3[h]; l=h; } } < 应该在点< 潣瑵? 比较可得最短的路程为< 对各居民区的最短路径和进行比较,和最小的则为首选地址 5总结: 程序设计是一种要求特别细腻的工作,一个逗号C++通过这次的课程设计我了解到了,或空格都能影响整个程序的工作运行,要求我们非常细心。 深深了解到细节决定程序的成需要认真负责的态度去对待。 通过一个星期以来的程序设计使败。 它让我记住了学习C++我的专业知识更加巩固了,填补了以前不懂得知识盲点。 编程需要兴趣和动手实践,毛泽东也曾说过实践是检验真理的唯一标准,开发出新的程序,创新思维也非常重要。 通过这次的程序设计使我更加喜爱编程这项工作,虽然很辛苦但是把程序完成之后的那份喜悦。 是外人难以感受的。 通过这次的学习,邻接矩阵,邻接表,最短路径我已经掌握了 6 参考文献北京: 电子工业出版社第C语言版)[M].1版.,2010数据结构(刘昌明肖宏启[1],. 附录: 程序代码#include constintn=5; constinte=10; intsum1[5]; intsum2[5]; intsum3[5]; intj=0; intmin; intl; #definemax32767 classGraph { public: intarcs[n+1][n+1]; inta[n+1][n+1]; intpath[n+1][n+1]; voidfloyd(Graph&t,constintn); 7 }; voidGraph: : floyd(Graph&t,constintn) { for(inti=0;i for(intj=0;j { t.a[i][j]=t.arcs[i][j]; if((i! =j)&&(a[i][j] t.path[i][j]=i; elset.path[i][j]=0; } for(intk=0;k { for(i=0;i for(intj=0;j if(t.a[i][k]+t.a[k][j] { t.a[i][j]=t.a[i][k]+t.a[k][j]; t.path[i][j]=t.path[k][j]; } } for(i=0;i { for(j=0;j { if(i! =j) { intnext=t.path[i][j]; 8 cout< cout<<<--< } } cout< } cout< for(i=0;i { for(j=0;j { cout< } cout< } cout< for(i=0;i { sum1[i]=0; for(intj=0;j { if(i! =j) { cout< ; intnext=t.path[i][j]; cout< while(next! =i) { cout<<<--< 9 next=t.path[i][next]; } cout<<<--< sum1[i]+=t.a[i][j]; } } < 点? 椼? 潣瑵? } for(i=0;i { sum2[i]=0; for(j=0;j { if(i! =j) { cout< ; intnext=t.path[j][i]; cout< while(next! =j) { cout<<<--< next=t.path[j][next]; } cout<<<--< } sum2[i]+=t.a[j][i]; } < 所有的点到潣瑵? 路程和为: ? 椼? } 10 for(into=0;o { sum3[o]=sum1[o]+sum2[o]; < 的往返路程的和为: 潣瑵? 点? 漼? } min=sum3[0]; for(inth=0;h { if(sum3[h]<=min) { min=sum3[h]; l=h; } } < 氼? 潣瑵? 比较可得在点那里建立医院为最短的路程 }voidmain() { Grapht;inti,j,w; for(i=0;i for(j=0;j if(i==j)t.arcs[i][j]=0; elset.arcs[i][j]=max; 11 for(intk=0;k { cin>>i>>j>>w; t.arcs[i][j]=w; } for(i=0;i { for(intj=0;j { cout< } cout< } cout< t.floyd(t,n); } 成绩评定 教师签字成绩 12 13
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整 word 数据结构 医院 选址 问题 文档 良心 出品