- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
数据结构实验报告
(二)
学院自动化学院学号姓名徐璐峰
日期2017-12-18
实验目的
熟练掌握图的存储方式;
了解图的特性,学习在实际问题背景下灵活运用图;
掌握图的两种最短路径算法。
实验内容
为简化问题,假设南京现有三条地铁线:1号线、2号线和3号线,线路都是双向的。3条地铁线的站点名分别如下,地铁线交叉的换乘点用T1、T2等表示。请根据3条地铁线的站点和换乘点构造图。编写程序,任意输入两个站名名称,输出乘坐地铁最少需要经过的车站数量(含输入的起点和终点,换乘站点只计算一次)。
地铁1号线(直线)经过车站:A1A2A3T1A4A5A6A7A8T2A9A10A11A12T3A13A14A15T4A16
地铁2号线(直线)经过车站:B1T5B2B3B4B5T2B6B7B8B9B10B11T3B12B13T6B14B15
地铁3号线(环线)经过车站:C1C2C3C4C5T1C6C7C8C9C10T5C11C12C13T6C14C15T4C16C17C18
实验要求
用户从键盘输入两个不同的站名,程序输出最少需要经过的车站数量(含输入的起点和终点,换乘站点只计算一次);
分别基于迪杰斯特拉算法和弗洛里德算法实现上述地铁换乘问题;
程序功能模块的划分要适当,多使用流程图来描述算法结构。
需求分析
输入的形式和输入值的范围。输入的形式需要是地铁站的名称,如“A1”、“B7”、
“C14”。所输入的的站点名不能是所要求的站点名之外的名称。
输出的形式。所输出的是基于弗洛里德算法与迪杰斯特拉算法进行的最短路径长度求解的结果,以及最短路径的车站路径编号,并在输入错误的时候允许重复输入。
程序所能达到的功能。用户输入车站起点与车站终点之后,通过迪杰斯特拉算法与
弗洛伊德算法,输出从起点到终点的最短路径长度,以及最短路径所经过的车站编号。
测试数据。
在程序运行的开始,会提示用户输入起点与终点,在用户输入起点与终点之后,程序会输出根据弗洛伊德算法所得到的最短路径所经过的车站数量,及经过的车站路径的编号。之后会再输出根据迪杰斯特拉算法所得的最短路径所经过的车站数量,及所经过的车站路径的编号。如果所输入起点或终点不存在,则会提示“起点/终点输入错误,请确认后重新输入。”之后会继续出现“请输入起点/终点:”之后,用户就可以重新输入原来输入错误的起点或终点车站名。在确认起点与终点都输入正确之后,程序就会输出最短路径与路径编号。在一次程序执行完毕后,支持用户重复输入。
概要设计
在程序中之定义了一种抽象数据类型,structGraph,它包含三个元素,intarrAcc[56][56];//邻接矩阵intverCount;//点数intarcCount;//边数。并且在程序开始的时候,还定义了长度为56的string型数组,用于存储所有的地铁站点。在程序运行开始的时候,会先调用change_train函数,在change_train函数中,会先对g.arrAcc[56][56]邻接矩阵进行初始化。之后调用floyd函数,及printres函数,输出起点到终点的最短路径长度及路径车站编号。之后,会继续调用Dijkstra函数及searchPath函数,输出起点到终点的最短路径长度及路径车站编号。
详细设计
类视图
整个程序中所写的函数有:floyd函数,transform函数,printres函数,Dijkstra函数,
searchPath函数,change_train函数。
Floyd函数(图g,邻接矩阵dis[][],用来存储路径的矩阵path[][])
{
//初始化path矩阵
For(row0to总的站点数)
For(col0to总的站点数)path[row][col]←row;
For(k0to总的站点数)For(i0to总的站点数)
For(j0to总的站点数)
{
//存在更近的路径,更新
If(dis[i][j]dis[i][k]+dis[k][j]){
dis[i][j]←dis[i][k]+dis[k][j];path[i][j]←path[k][j];
}
}
}
Transform函数(字符c)
{
For(i0to站点数)
If(存储所有站点的数组s[i]==c)
返回i;
}
Printres函数(图Graph*p,经floyd函数转化后的邻接矩阵dis[56][56],存储路径的矩阵
pat
您可能关注的文档
- ((驾驶员管理及车辆管理规定.docx
- 应用统计案例.doc
- 建筑装饰装修工程施工组织设计.docx
- 锐捷实验题的网络工程课程设计.docx
- 工业计算机网络作业.docx
- 星源计划书正文.docx
- 全国第五届金奖作品绿尔康.docx
- 全智能语音交互解决方案(3月)--销售培训版x.pptx
- 网络技术期末背诵重点知识.docx
- 最新电大《网络实用技术基础》机考网考纸考题库及答案.docx
- 第三单元解决问题的策略 三年级下册数学高频考点重难点讲义(苏教版)(1).docx
- 4.4 解比例 数学六年级下册同步培优讲义(苏教版).docx
- 第四单元《根据方向与距离确定物体位置》(教案)五年级下册数学青岛版.docx
- (奥数典型题)第三讲 分解质因数 五年级下册数学思维拓展提升讲义(人教版).docx
- 2.2:2、5、3的倍数-人教版五年级数学下册第二单元:因数和倍数.docx
- 第六单元正比例和反比例 六年级下册数学高频考点重难点讲义(苏教版).docx
- 第二单元除数是一位数的除法 三年级下册数学高频考点重难点讲义(人教版).docx
- 第二单元-认识三角形和四边形 四年级数学下册提升(北师大版).docx
- 第一单元观察物体(三)五年级下册数学高频考点重难点讲义(人教版).docx
- 第九单元 数学广角—推理 二年级数学下册重难点知识点(人教版).docx
最近下载
- 涂药法-中医护理技术操作规程.ppt VIP
- 弱势群体社会医学(医学课件).ppt VIP
- 小学语文四年级上册《语文园地六》作业设计.docx
- 2024-2030年中国鹿行业经营风险与发展前景趋势预测分析研究报告.docx
- GB_T27065-2015_合格评定产品、过程和服务认证机构要求.doc
- 个人能力就业分析报告.pdf VIP
- 成语故事《三顾茅庐》故事简介PPT.pptx VIP
- 现代遗传学(厦大)中国大学MOOC慕课 章节测验期中期末考试答案.docx
- 北京市西城区2022-2023学年六年级上学期英语期末试卷(音频暂未更新).docx VIP
- 在役聚乙烯PE地埋燃气管道失效可能性评分表、后果评分表.pdf VIP
文档评论(0)