网站大量收购独家精品文档,联系QQ:2885784924

全国铁路运输网最佳经由问题数据结构课程设计1.doc

全国铁路运输网最佳经由问题数据结构课程设计1.doc

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构课程设计报告全国铁路运输网最佳经由问题时间复杂度分析算法的改进设想,铁路线名称,起始站编号,终点站编号,该铁路线长度,通行标志(00B客货运禁行,01B货运通行专线,10B客运通行专线,11B客货运通行)。 火车站对象包括所属铁路线编号,车站代码,车站名,车站简称,离该铁路线起点站路程及终点站路程。 2.基本要求 (1)查询某站所属的铁路线 (2)新增新增 在这里简单介绍弗洛伊德算法的核心思想:从图的带权邻接矩阵开始,假设从Vi到Vj有弧,则从Vi到Vj存在一条长度为arcs[i] [j]的路径,该路径不一定是最小路径,尚需进行n次试探。首先考虑路径(Vi,V0,Vj)是否存在。如果存在,则比较(Vi,Vj)和(Vi,V0,Vj)的路径长度取长度较短者为从Vi到Vj的中间顶点的序号不大于0的最短路径。假如在路径上再增加一个顶点V1,如果(Vi,….,V1)和(V1,….,Vj)分别是当前找到的中间顶点的序号不大于0的最短路径,那么(Vi,…V1,…,Vj)就有可能是从Vi到Vj的中间顶点的序号不大于1的最短路径。将它和已经得到的Vi到Vj的中间顶点的序号不大于0的最短路径相比较,从中选出中间顶点的序号不大于1的最短路径之后,再增加一个V2继续试探,以此类推,经过n次比较后,即可求出从Vi到Vj的最短路径。 2.数据结构设计 存储结构:本程序部分函数采用的是文件进行数据的存储,所以采用的是顺序存储结构,如要添加数据,直接在文件里面进行操作就行了。弗洛伊德算法中采用的存储结构是图的邻接矩阵A.如下为抽象数据类型定义:ADT List{ 数据对象:D={ai| ai ∈ElemSet,i=1,2,3……,n,n≥0} 数据关系:R1={ai-1,ai| ai-1,ai ∈D,i=1,2,3,……,n} 基本操作: void readviews() 初始条件:views.txt已经存在。 操作结果:将 views.txt里面的数据一次存入数组views[SIZE_view]里,并将数组里面的存储数据的个数赋值给全局变量view_count; void readways() 初始条件:ways.txt已经存在。 操作结果:将 ways.txt里面的数据一次存入数组ways[SIZE_way]里,并将数组里面的存储数据的个数赋值给全局变量way_count; void readlines() 初始条件:lines.txt已经存在。 操作结果:将 lines.txt里面的数据一次存入数组lines[SIZE_line]里,并将数组里面的存储数据的个数赋值给全局变量line_count; void search(); 初始条件:views[SIZE_view]存在,且里面放有相关信息。 操作结果:根据用户输入的车站名查找该车站的相关信息并输出; void addview() 初始条件:views.txt已经存在。 操作结果:将 views.txt里面的数据一次存入数组views[SIZE_view]里,并将数组里面的存储数据的个数赋值给全局变量view_count; void addway() 初始条件:ways.txt已经存在。 操作结果:将 ways.txt里面的数据一次存入数组ways[SIZE_way]里,并将数组里面的存储数据的个数赋值给全局变量way_count; void addline() 初始条件:lines.txt已经存在。 操作结果:将 lines.txt里面的数据一次存入数组lines[SIZE_line]里,并将数组里面的存储数据的个数赋值给全局变量line_count; void floyed() 初始条件: views[SIZE_view]、ways[SIZE_way]、lines[SIZE_line]已经存在并且存有相关信息。 操作结果:把每个车站到各个车站的最短经由路径及此路径的距离存储在path_info、path_list[SIZE_view][SIZE_view]数组里; void shortest_path() 初始条件:path_info、path_list[SIZE_view][SIZE_view]存储相关的数据; 操作结果:输出输入的两个站的最短距离及经过的所有站; void addadta(int menu) 初始条件:views.txt、ways.txt、lines.txt已经存在。 操作结果:如果menu=1,则添加车站数据,如果menu=2,则添加路线数据; B.弗洛伊德算法中,数据结构所用到的思想为图的思想,所以数据结构的设计主要的目的为便于图的操作的设计。因此我们用了下面这些数据定义。 struct view_info /*城市信息结构*/ { in

文档评论(0)

mx597651661 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档