数据结构-医院选址问题.doc_第1页
数据结构-医院选址问题.doc_第2页
数据结构-医院选址问题.doc_第3页
数据结构-医院选址问题.doc_第4页
数据结构-医院选址问题.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

课程设计报告书课程名称 数据结构 设计题目 社区医院选址问题 专业班级 * 学 号 * 姓 名 * 指导教师 * 计算机科学与技术专业教研室1 设计目的:数据结构是计算机科学与技术、信息管理专业的重要的专业基础课,是计算机系统软件和应用软件开发的重要理论和技术。本次课程设计内容主要用到图的结构。所以课程设计目要求掌握图的理论、图的邻接矩阵存储方式、顶点对这间的最短路径算法设计、及图在实践中的简单应用。 2设计任务:已知有向图,图中各顶点代表居民区,有向边代表交通路线。权表示路程(公里) 。要在居民区建立一家医院。要求各居民区到医院的路径尽可能短,请设计医院建在哪个居民区比较合适。 034144313131212625153 设计内容:图中各顶点代表居民区,边上的权代表各居民区的路程。要解决选地址问题,必须确定最短路径。求各顶点到其它顶点的最短路径,并求各居民区之间往返路径的和。对各居民区的最短路径和进行比较,和最小的则为首选地址。问题的实现,采用顶点对之间最短路径算法,对各居民区的最短路径进行计算。1:求出邻接矩阵2:求出邻接表3:求出最短路径的邻接矩阵4:求各顶点到其它顶点的最短路径的和5:求出其它顶点到各顶点的最短路径的和6:求出往返最短路径的和7:对各居民区的最短路径和进行比较,和最小的则为首选地址。4 结果分析:这步是输入数据输出邻接矩阵for(i=0;in;i+)for(int j=0;jn;j+)coutt.arcsij ;coutendl;coutendl;输出邻接表for(i=0;in;i+) for(j=0;jn;j+)if(i!=j) int next=t.pathij;coutj;cout-i t.aij ;coutendl;输出最短路径的邻接矩阵for(i=0;in;i+)for(j=0;jn;j+)coutt.aij ;coutendl;输出点到所有点的路程的和for(i=0;in;i+)sum1i=0;for(int j=0;jn;j+) if(i!=j) coutt.aij:; int next=t.pathij; coutj; while(next !=i) cout-next;next=t.pathinext; cout-iendl; sum1i+=t.aij; cout点i到所有点的路程和为:sum1iendl;逆输出所有点到点路径的和for(i=0;in;i+)sum2i=0;for(j=0;jn;j+)if(i!=j)coutt.aji:; int next=t.pathji;couti;while(next !=j)cout-next;next=t.pathjnext;cout-jendl;sum2i+=t.aji;cout所有的点到i路程和为:sum2iendl;输出所有点往返路程的和for(int o=0;on;o+)sum3o=sum1o+sum2o;cout点o的往返路程的和为:sum3oendl;min=sum30;for(int h=0;hn;h+)if(sum3h=min)min=sum3h;l=h;cout比较可得最短的路程为min 应该在点 l 哪里建立医院。endl;对各居民区的最短路径和进行比较,和最小的则为首选地址5 总结:通过这次的课程设计我了解到了,C+程序设计是一种要求特别细腻的工作,一个逗号或空格都能影响整个程序的工作运行,要求我们非常细心。深深了解到细节决定程序的成败。它让我记住了学习C+需要认真负责的态度去对待。通过一个星期以来的程序设计使我的专业知识更加巩固了,填补了以前不懂得知识盲点。编程需要兴趣和动手实践,毛泽东也曾说过实践是检验真理的唯一标准,开发出新的程序,创新思维也非常重要。通过这次的程序设计使我更加喜爱编程这项工作,虽然很辛苦但是把程序完成之后的那份喜悦。是外人难以感受的。通过这次的学习,邻接矩阵,邻接表,最短路径我已经掌握了参考文献1 肖宏启,刘昌明.数据结构(C语言版)M.第1版. 北京:电子工业出版社,2010 附录:程序代码#includeconst int n=5;const int e=10;int sum15;int sum25;int sum35;int j=0;int min;int l;#define max 32767class Graphpublic:int arcsn+1n+1; int an+1n+1;int path n+1n+1;void floyd(Graph &t,const int n);void Graph:floyd(Graph &t,const int n)for(int i=0;in;i+)for(int j=0;jn;j+) t.aij=t.arcsij; if(i!=j)&(aijmax) t.pathij=i; else t.pathij=0;for(int k=0;kn;k+)for(i=0;in;i+)for(int j=0;jn;j+)if(t.aik+t.akjt.aij) t.aij=t.aik+t.akj; t.pathij=t.pathkj;for(i=0;in;i+) for(j=0;jn;j+)if(i!=j) int next=t.pathij;coutj;cout-i t.aij ;coutendl;coutendl;for(i=0;in;i+)for(j=0;jn;j+)coutt.aij ;coutendl;coutendl;for(i=0;in;i+)sum1i=0;for(int j=0;jn;j+) if(i!=j) coutt.aij:; int next=t.pathij; coutj; while(next !=i) cout-next;next=t.pathinext; cout-iendl; sum1i+=t.aij; cout点i到所有点的路程和为:sum1iendl;for(i=0;in;i+)sum2i=0;for(j=0;jn;j+)if(i!=j)coutt.aji:; int next=t.pathji;couti;while(next !=j)cout-next;next=t.pathjnext;cout-jendl;sum2i+=t.aji;cout所有的点到i路程和为:sum2iendl;for(int o=0;on;o+)sum3o=sum1o+sum2o;cout点o的往返路程的和为:sum3oendl;min=sum30;for(int h=0;hn;h+)if(sum3h=min)min=sum3h;l=h;cout比较可得在点l那里建立医院min 为最短的路程endl;void main()Graph t;int i,j,w;for(i=0;in;i+)for(j=0;jn;j+)if(i

温馨提示

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

评论

0/150

提交评论