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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

兰州道路交通网络信息查询.docx

1、兰州道路交通网络信息查询*实践教学*兰州理工大学 2011年春季学期算法与数据结构课程设计题 目:兰州道路交通网络信息查询 专业班级: 姓 名: 学 号: 指导教师: 成 绩: 摘 要在本设计实验中,我所采用的是邻接矩阵作为数据的存储结构,用不同的功能模块对两地距离和道路交通信息进行编辑。兰州道路交通网络信息查询程序的目的是为人们提供各种信息查询服务:即查询任意两地之间的一条最短的简单路径、还有两地之间的距离等。最短路径的输出有各种方法,此程序中采用迪杰斯特拉算法。迪杰斯特拉算法用于求解一个有向图(也可以是无向图,无向图是有向图的一种特例)的一个点(称之为原点)到其余各点(称之为周边点)的最短

2、路径问题。关键词:交通网络,邻接矩阵,迪杰斯特拉。序 言我们在对一些问题进行求解时,会发现有些问题很难找到规律,或者根本无规律可寻。对于这样的问题,可以利用计算机运算速度快的特点,先搜索查找所有可能出现的情况,再根据题目条件从所有可能的情况中,删除那些不符合条件的解。图是一种复杂的非线性结构,在人工智能,工程,数学,物理,化学,计算机学科等领域中,都有着广泛的应用。我们用最短路径问题,通过一个人们熟悉的交通咨询系统实例来验证迪杰斯特拉算法。兰州道路交通网络信息查询是以兰州道路交通网络为背景,设计出的一个简单的能够实现兰州道路交通网络信息查询功能的c语言程序系统,对兰州道路交通信息进行编辑,为旅

3、客提供了两地之间的最短路径及距离。查询的实现以用户和计算机对话的方式进行,要注意人机交互的屏幕界面,由用户选择要查询的地点,输入要查询路径的起点和终点。1. 采用类C语言定义相关数据类型函数有:void CreateUGN();/*造图函数*/ void ShortwstPath();/*最短路径函数*/ void narrate();/*说明函数*/ void introduce();/*介绍函数*/ void output();/*输出函数*/ void main()/*主函数*/类有:ArcCell; /*定义边的类型*/VertexType; /*定义顶点的类型*/MGraph; /*

4、定义图的类型*/全局变量有:MGraph G; /*把图定义为全局变量*/int P3333;long int D33;2. 问题描述 在交通网络非常发达,交通工具和交通方式不断更新的今天,人们在出差,旅行或做其他出行时,不仅关心节省交通费用,而且对里程和所需时间也感兴趣。对于这样一个人们关心的问题,可用一个图结构来表示交通网络系统,利用计算机建立一个交通咨询系统。图中顶点表示站点,边表示站之间的交通关系。这个系统可以回答旅客提出的各种问题。3. 需求分析 设计一个交通咨询系统,能让旅客咨询从一个站顶点到另一个站顶点之间的最短路径或最少距离等。对于不同咨询要求,可输入站之间的路程或所走距离。该

5、设计共分三部分,一是建立交通网络图的存储结构;二是解决单源最短路径问题;最后再实现两个站顶点之间的最短路径问题。4.各模块流程图及伪码算法(1).其功能模块图1所示: 图1 功能模块图(2).伪码算法如下:void ShortwstPath(num) /*最短路径函数*/int num; int v,w,i,t; int final33; int min; for(v=0;v33;+v)/*初始化*/ finalv=0; /*标志数组初始化*/ Dv=G.arcsnumv.adj; for(w=0;w33;+w) Pvw=0;/*设空路径*/ if(Dv20000)/*v,v0间有边存在*/

6、Pvnum=1;Pvv=1;/*到v的最短路径上包含v0及v*/ /*if*/ Dnum=0; finalnum=1;/*初始化,v0顶点属于B集*/ /*开始主循环,每次求得v0到某个v顶点的最短路径,并加v到B集*/ for(i=0;i33;+i)/*其余G.vexnum-1各顶点*/ min=20000; for(w=0;w33;+w) if(!finalw)/*w顶点在V-S中*/ if(Dwmin)v=w;min=Dw;/*w顶点离v0更近*/ finalv=1;/*离v0顶点最近的v加入B*/ for(w=0;w33;+w)/*更新当前最短路径及距离*/ if(!finalw&(m

7、in+G.arcsvw.adj)Dw) Dw=min+G.arcsvw.adj;/*修改D和P数组*/ for(t=0;t33;t+) Pwt=Pvt; Pww=1; /*if*/ /*for*/5.函数的调用关系图如图2所示: 图2 函数的调用关系图首先用一个数组来定义邻接矩阵,并定义当前顶点数,顶点用来表示地点,数组的值用来表示路径长度。然后给各个顶点赋予初值,亦即兰州各个地方的名称,并确定各个地方之间的距离,还要标注各个地方的简单信息,让旅客一目了然,并用迪杰斯特拉算法来实现最短路径的求解。之后在主函数main()中调用各个子函数,显示两地点之间的最短路径、某地点相关信息。整个程序功能就

8、这样实现了。6.调试分析(a).调试中遇到的问题及对问题的解决方法遇到的问题:在调试时,有时会把值输错,导致超出范围,输出错误结果或程序直接结束。或者有时候还会在错误的环境下运行。解决方法:首先注意值的范围,输入在范围内的任意值。其次注意运行环境,有中文的一定要在中文运行环境中进行。(b).算法的时间复杂度和空间复杂度时间复杂度O(n2)。空间复杂度O(n2)7.测试结果我对所到地点信息查询进行了如下测试: 先输入账号密码,然后按回车键就出现如下结果: 经测试结果是正确的。然后选择服务项目,输入1或2,若输入1之后再回车就出现如下结果:之后输入需要查询的地点的序号,如9,再按回车,结果如下最后

9、再按任意键结束。若在选择服务项目是输入2,再按回车就出现如下结果:然后输入从哪个地点出发,如0,按回车在输入要去的目的地的序号,如19,按回车:最后按任意键结束程序。设 计 总 结在这次数据结构课程设计中,我的题目是: 兰州道路交通网络信息查询,通过对该题目的设计,我加深了对图的建立和对迪杰斯特拉算法的理解,对课本中所学的各种数据结构进一步理解和掌握,学会了如何把学到的知识用于解决实际问题,锻炼了自己动手的能力。两周的时间虽然很短暂,但其间的内容是很充实的,在其中我学习到了很多平时书本中无法学到的东西,积累了经验,锻炼了自己分析问题,解决问题的能力,并学会了如何将所学的各科知识融会,组织,来配

10、合学习,总之,这段时间中我收益很大,学到很多。在课程设计时我遇到了很多的问题,但在老师的帮助和对各种资料的查阅中,最终将问题解决,这培养了我自主动手,独立研究的能力,为今后在学习工作中能更好的发展打下了坚实的基础。在以后的学习中我会更加注意各个方面的能力的协调发展。参考文献1 严蔚敏,吴伟民.数据结构(C语言版).清华大学出版社.2 严蔚敏,吴伟民.数据结构题集(C语言版).清华大学出版社.3 DATA STRUCTURE WITH C+. William Ford,William Topp .清华大学出版社(影印版). 4 谭浩强.c语言程序设计. 清华大学出版社. 5数据结构与算法分析(J

11、ava版) , A Practical Introduction to Data Structures and Algorithm Analysis Java Edition Clifford A. Shaffer , 张铭,刘晓丹译电子工业出版社 2001 年1月致 谢在本次设计的过程中我遇到了很多困难,这都要感谢指导老师王连相的指导,才使我在顺利完成设计项目的同时又加深了对数据结构这门学问的理解,并且发现了自己的不足。许多同学也对我给予了许多帮助,向我推荐了一些好的书籍,它们给我提供了许多优秀的设计思路和简洁而精辟的算法,使我在整体设计的基础上得以完善各个模块的设计,从而设计了一个比较合理

12、的道路查询程序,在这里一并致谢。 总之,我要对在这次课设中所有帮助过我的人说声谢谢!祝他们身体健康生活愉快!附录:源程序(带注释)#include string.h#include stdlib.h #include stdio.htypedef struct ArcCellint adj;char *info;ArcCell; /*定义边的类型*/typedef struct VertexTypeint number;char *place;VertexType; /*定义顶点的类型*/typedef structVertexType vex33;ArcCell arcs3333;int v

13、exnum,arcnum;MGraph; /*定义图的类型*/MGraph G; /*把图定义为全局变量*/int P3333;long int D33;void CreateUDN(v,a) /*造图涵数*/int v,a; int i,j;G.vexnum=v;G.arcnum=a;for(i=0;iG.vexnum;+i) G.vexi.number=i;G.vex0.place=兰州交通大学;G.vex1.place=甘肃政法学院;G.vex2.place=兰州师范大学;G.vex3.place=培黎广场;G.vex4.place=师大附中;G.vex5.place=桥北;G.vex6

14、.place=桥南;G.vex7.place=西站;G.vex8.place=公交公司;G.vex9.place=小西湖;G.vex10.place=兰州理工大本部;G.vex11.place=西湖公园;G.vex12.place=文化宫;G.vex13.place=西关十字;G.vex14.place=兰州木器厂;G.vex15.place=陆军总院;G.vex16.place=石油大厦;G.vex17.place=中山桥;G.vex18.place=兰州剧院;G.vex19.place=南关十字;G.vex20.place=五泉山;G.vex21.place=铁路局;G.vex22.pla

15、ce=广场西口;G.vex23.place=广场东口;G.vex24.place=兰州大学;G.vex25.place=火车站;G.vex26.place=市政府;G.vex27.place=雁滩;G.vex28.place=啤酒厂;G.vex29.place=胶鞋厂;G.vex30.place=杨家桥;G.vex31.place=龚家湾;G.vex32.place=兰州理工大西校区;for(i=0;iG.vexnum;+i) for(j=0;jG.vexnum;+j) G.arcsij.adj=20000;G.arcs01.adj=G.arcs10.adj=500;G.arcs12.adj=

16、G.arcs21.adj=600;G.arcs23.adj=G.arcs32.adj=260;G.arcs34.adj=G.arcs43.adj=700;G.arcs45.adj=G.arcs54.adj=1100;G.arcs56.adj=G.arcs65.adj=390;G.arcs67.adj=G.arcs76.adj=830;G.arcs78.adj=G.arcs87.adj=1200;G.arcs89.adj=G.arcs98.adj=780;G.arcs910.adj=G.arcs109.adj=1006;G.arcs911.adj=G.arcs119.adj=574;G.arcs

17、1112.adj=G.arcs1211.adj=540;G.arcs1213.adj=G.arcs1312.adj=670;G.arcs614.adj=G.arcs146.adj=850;G.arcs1415.adj=G.arcs1415.adj=980;G.arcs159.adj=G.arcs915.adj=640;G.arcs916.adj=G.arcs169.adj=802;G.arcs1617.adj=G.arcs1716.adj=625;G.arcs1718.adj=G.arcs1817.adj=487;G.arcs1318.adj=G.arcs1813.adj=280;G.arcs

18、1819.adj=G.arcs1918.adj=511;G.arcs1920.adj=G.arcs2019.adj=1389;G.arcs1921.adj=G.arcs2119.adj=1487;G.arcs1922.adj=G.arcs2219.adj=956;G.arcs2223.adj=G.arcs2322.adj=479;G.arcs2324.adj=G.arcs2423.adj=1876;G.arcs2425.adj=G.arcs2524.adj=765;G.arcs1726.adj=G.arcs2617.adj=895;G.arcs2627.adj=G.arcs2726.adj=2

19、067;G.arcs728.adj=G.arcs287.adj=1520;G.arcs2829.adj=G.arcs2928.adj=967;G.arcs2930.adj=G.arcs3029.adj=769;G.arcs3031.adj=G.arcs3130.adj=800;G.arcs3132.adj=G.arcs3231.adj=329;void narrate() /*说明函数*/int i,k=0;for(i=0;i33;i+)printf(%d %-10s,i,G.vexi.place);k=k+1;if(k%4=0) printf(nn);void introduce() int

20、 b; printf(请 输 入 您 想 要 查 询 的 地 点 编 号:); scanf(%d,&b); getchar(); printf(n); switch(b) case 0: printf(0:兰 州 交 通 大 学nn前 兰 州 铁 道 学 院。nn);break; case 1: printf(1:甘 肃 政 法 学 院nn 兰 州 另 一 所 重 要 的 学 校。nn);break; case 2: printf(2:兰 州 师 范 大 学nn兰 州 一 所 重 要 的 师 范 类 学 校。nn);break; case 3: printf(3:培 黎 广 场 nn安 宁 区

21、 的 一 个 重 要 的 广 场。nn);break; case 4: printf(4:师 大 附 中 nn兰 州 市 第 一 的 高 中 学 校。nn);break; case 5: printf(5:桥 北 nn在 黄 河 市 场 附 近,是 交 通 枢 纽。nn);break; case 6: printf(6:桥 南 nn重 要 的 交 通 枢 纽,有 一 个 小 树 林。nn);break; case 7: printf(7:兰 州 西 站 nn火 车 站 兼 购 物 市 场,车 多 人 多。nn);break; case 8: printf(8:公 交 公 司 nn公 交 车 的

22、 管 理 公 司。nn);break; case 9: printf(9:小 西 湖 nn购 物 市 场。nn);break; case 10: printf(10:兰 州 理 工 大 学nn前 甘 肃 工 业 大 学,在 甘 肃 省 内 稳 做 第 三 把 交 椅。nn);break; case 11: printf(11:西 湖 公 园 nn 一 所 免 费 的 公 共 公 园。nn);break; case 12: printf(12:文 化 宫 nn 甘 肃 文 化 的 集 结 地。nn);break; case 13: printf(13:西 关 什 字 nn兰 州 市 中 心。nn

23、);break; case 14: printf(14:兰 州 木 器 厂 nn 制 造 家 具 的 公 司。nn);break; case 15: printf(15:陆 军 总 院 nn 医 院,兰 州 市 医 疗 设 施 先 进 的医 院。nn);break; case 16: printf(16:石 油 大 厦 nn 一 座 立 在 黄 河 旁 边 的 大 厦,是 一 座 写 字 楼。nn);break; case 17: printf(17:中 山 桥 nn黄 河 第 一 桥 ,主 要 构 架 为 钢 铁 所 造,历 史 悠 久。nn);break; case 18: printf(18:兰 州 剧 院 nn 兰 州 历 史 悠 久,规 模 较 大 的 电 影 院。nn);break; case 19: printf(19:南 关 nn政 府 部 门 所 在 地 ,市 中 心。nn);break; case 20: printf(20:五 泉 山 nn 兰 州 市 的 一 座 公 园,比 较 著 名。nn);break; case 21: printf(21:铁 路 局 nn 管 理 铁 路 和 火 车 的 地 方。nn);break;

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

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