1、/*说明函数*/ void introduce();/*介绍函数*/ void output();/*输出函数*/ void main()/*主函数*/类有:ArcCell; /*定义边的类型*/VertexType; /*定义顶点的类型*/MGraph; /*定义图的类型*/全局变量有:MGraph G; /*把图定义为全局变量*/int P3333;long int D33;2. 问题描述 在交通网络非常发达,交通工具和交通方式不断更新的今天,人们在出差,旅行或做其他出行时,不仅关心节省交通费用,而且对里程和所需时间也感兴趣。对于这样一个人们关心的问题,可用一个图结构来表示交通网络系统,利
2、用计算机建立一个交通咨询系统。图中顶点表示站点,边表示站之间的交通关系。这个系统可以回答旅客提出的各种问题。3. 需求分析 设计一个交通咨询系统,能让旅客咨询从一个站顶点到另一个站顶点之间的最短路径或最少距离等。对于不同咨询要求,可输入站之间的路程或所走距离。该设计共分三部分,一是建立交通网络图的存储结构;二是解决单源最短路径问题;最后再实现两个站顶点之间的最短路径问题。4.各模块流程图及伪码算法(1).其功能模块图1所示: 图1 功能模块图(2).伪码算法如下:void ShortwstPath(num) /*最短路径函数*/int num; int v,w,i,t; int final33
3、; int min; for(v=0;v33;+v)/*初始化*/ finalv=0; /*标志数组初始化*/ Dv=G.arcsnumv.adj; for(w=0;w+w) Pvw=0;/*设空路径*/ if(Dv20000)/*v,v0间有边存在*/ Pvnum=1;Pvv=1;/*到v的最短路径上包含v0及v*/ /*if*/ Dnum=0; finalnum=1;/*初始化,v0顶点属于B集*/ /*开始主循环,每次求得v0到某个v顶点的最短路径,并加v到B集*/ for(i=0;i+i)/*其余G.vexnum-1各顶点*/ min=20000; if(!finalw)/*w顶点在V
4、-S中*/ if(Dwmin)v=w;min=Dw;/*w顶点离v0更近*/ finalv=1;/*离v0顶点最近的v加入B*/+w)/*更新当前最短路径及距离*/finalw&(min+G.arcsvw.adj)Dw) Dw=min+G.arcsvw.adj;/*修改D和P数组*/ for(t=0;tt+) Pwt=Pvt; Pww=1; /*for*/5.函数的调用关系图如图2所示: 图2 函数的调用关系图首先用一个数组来定义邻接矩阵,并定义当前顶点数,顶点用来表示地点,数组的值用来表示路径长度。然后给各个顶点赋予初值,亦即兰州各个地方的名称,并确定各个地方之间的距离,还要标注各个地方的简
5、单信息,让旅客一目了然,并用迪杰斯特拉算法来实现最短路径的求解。之后在主函数main()中调用各个子函数,显示两地点之间的最短路径、某地点相关信息。整个程序功能就这样实现了。6.调试分析(a).调试中遇到的问题及对问题的解决方法遇到的问题:在调试时,有时会把值输错,导致超出范围,输出错误结果或程序直接结束。或者有时候还会在错误的环境下运行。解决方法:首先注意值的范围,输入在范围内的任意值。其次注意运行环境,有中文的一定要在中文运行环境中进行。(b).算法的时间复杂度和空间复杂度时间复杂度O(n2)。空间复杂度O(n2)7.测试结果我对所到地点信息查询进行了如下测试: 先输入账号密码,然后按回车
6、键就出现如下结果: 经测试结果是正确的。然后选择服务项目,输入1或2,若输入1之后再回车就出现如下结果:之后输入需要查询的地点的序号,如9,再按回车,结果如下最后再按任意键结束。若在选择服务项目是输入2,再按回车就出现如下结果:然后输入从哪个地点出发,如0,按回车在输入要去的目的地的序号,如19,按回车:最后按任意键结束程序。设 计 总 结在这次数据结构课程设计中,我的题目是: 兰州道路交通网络信息查询,通过对该题目的设计,我加深了对图的建立和对迪杰斯特拉算法的理解,对课本中所学的各种数据结构进一步理解和掌握,学会了如何把学到的知识用于解决实际问题,锻炼了自己动手的能力。两周的时间虽然很短暂,
7、但其间的内容是很充实的,在其中我学习到了很多平时书本中无法学到的东西,积累了经验,锻炼了自己分析问题,解决问题的能力,并学会了如何将所学的各科知识融会,组织,来配合学习,总之,这段时间中我收益很大,学到很多。在课程设计时我遇到了很多的问题,但在老师的帮助和对各种资料的查阅中,最终将问题解决,这培养了我自主动手,独立研究的能力,为今后在学习工作中能更好的发展打下了坚实的基础。在以后的学习中我会更加注意各个方面的能力的协调发展。参考文献1 严蔚敏,吴伟民.数据结构(C语言版).清华大学出版社.2 严蔚敏,吴伟民.数据结构题集(C语言版).清华大学出版社.3 DATA STRUCTURE WITH
8、C+. William Ford,William Topp .清华大学出版社(影印版). 4 谭浩强.c语言程序设计. 清华大学出版社. 5数据结构与算法分析(Java版) , A Practical Introduction to Data Structures and Algorithm Analysis Java Edition Clifford A. Shaffer , 张铭,刘晓丹译电子工业出版社 2001 年1月致 谢在本次设计的过程中我遇到了很多困难,这都要感谢指导老师王连相的指导,才使我在顺利完成设计项目的同时又加深了对数据结构这门学问的理解,并且发现了自己的不足。许多同学也对
9、我给予了许多帮助,向我推荐了一些好的书籍,它们给我提供了许多优秀的设计思路和简洁而精辟的算法,使我在整体设计的基础上得以完善各个模块的设计,从而设计了一个比较合理的道路查询程序,在这里一并致谢。 总之,我要对在这次课设中所有帮助过我的人说声谢谢!祝他们身体健康生活愉快!附录:源程序(带注释)#include string.hstdlib.hstdio.htypedef struct ArcCellint adj;char *info;ArcCell;typedef struct VertexTypeint number;char *place;VertexType;typedef struct
10、VertexType vex33;ArcCell arcs3333;int vexnum,arcnum;MGraph;void CreateUDN(v,a) /*造图涵数*/int v,a; int i,j;G.vexnum=v;G.arcnum=a;for(i=0;G.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.place=桥南G.vex7.place=西站
11、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.place=广场西口G.vex23.place=广场东口G.vex24.place=兰
12、州大学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(j=0;j+j) G.arcsij.adj=20000;G.arcs01.adj=G.arcs10.adj=500;G.arcs12.adj=G.arcs21.adj=600;G.arcs23.adj=G.arcs32.adj=260;G.arcs34.adj=G.arcs43.adj=700;G.ar
13、cs45.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.arcs1112.adj=G.arcs1211.adj=540;G.arcs1213.adj=G.arcs1312.adj=670;G.arcs614.adj=G.arc
14、s146.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.arcs1819.adj=G.arcs1918.adj=511;G.arcs1920.adj=G.arcs2019.adj=1389;G.arcs1921.adj=G.a
15、rcs2119.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=2067;G.arcs728.adj=G.arcs287.adj=1520;G.arcs2829.adj=G.arcs2928.adj=967;G.arcs2930
16、.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;i+)printf(%d %-10s,i,G.vexi.place);k=k+1;if(k%4=0) printf(nn);void introduce() int b; printf(请 输 入 您 想 要 查 询 的 地 点 编 号: scanf(%d,&b); getchar(); printf(n switch(b) case 0:0:兰
17、州 交 通 大 学nn前 兰 州 铁 道 学 院。break; case 1:1:甘 肃 政 法 学 院nn 兰 州 另 一 所 重 要 的 学 校。 case 2:2:兰 州 师 范 大 学nn兰 州 一 所 重 要 的 师 范 类 学 校。 case 3:3:培 黎 广 场 nn安 宁 区 的 一 个 重 要 的 广 场。 case 4:4:师 大 附 中 nn兰 州 市 第 一 的 高 中 学 校。 case 5:5:桥 北 nn在 黄 河 市 场 附 近,是 交 通 枢 纽。 case 6:6:桥 南 nn重 要 的 交 通 枢 纽,有 一 个 小 树 林。 case 7:7:兰 州
18、西 站 nn火 车 站 兼 购 物 市 场,车 多 人 多。 case 8:8:公 交 公 司 nn公 交 车 的 管 理 公 司。 case 9:9:小 西 湖 nn购 物 市 场。 case 10:10:兰 州 理 工 大 学nn前 甘 肃 工 业 大 学,在 甘 肃 省 内 稳 做 第 三 把 交 椅。 case 11:11:西 湖 公 园 nn 一 所 免 费 的 公 共 公 园。 case 12:12:文 化 宫 nn 甘 肃 文 化 的 集 结 地。 case 13:13:西 关 什 字 nn兰 州 市 中 心。 case 14:14:兰 州 木 器 厂 nn 制 造 家 具 的
19、公 司。 case 15:15:陆 军 总 院 nn 医 院,兰 州 市 医 疗 设 施 先 进 的医 院。 case 16:16:石 油 大 厦 nn 一 座 立 在 黄 河 旁 边 的 大 厦,是 一 座 写 字 楼。 case 17:17:中 山 桥 nn黄 河 第 一 桥 ,主 要 构 架 为 钢 铁 所 造,历 史 悠 久。 case 18:18:兰 州 剧 院 nn 兰 州 历 史 悠 久,规 模 较 大 的 电 影 院。 case 19:19:南 关 nn政 府 部 门 所 在 地 ,市 中 心。 case 20:20:五 泉 山 nn 兰 州 市 的 一 座 公 园,比 较 著 名。 case 21:21:铁 路 局 nn 管 理 铁 路 和 火 车 的 地 方。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1