求无向图中求两点间的所有简单路径实验报告 下载本文

内容发布更新时间 : 2024/5/28 11:01:08星期一 下面是文章的全部内容请认真阅读。

HUNAN UNIVERSITY

课程实验报告

题目:求无向图中求两点间的所有简单路径 学生姓名: 学生学号: 专业班级: 指导老师: 完成日期:

一. 需求分析

输入形式

本程序要求用户首先输入一个结点总数,然后输入结点的城市编号(4位长的数字,例如电话区号,长沙是0731),以及高速公路连接的两所城市(用高速公路连接的两个城市编号标记),最后输入要查询所有简单路径的两座城市的名称。当用户输入不合法时,提示用户输入有误,并重新输入。输入具体格式如下: 请输入城市总数:

请输入高速公路的条数: 请依次输入城市名称:

请输入高速公路连接的两座城市:

请输入需查询所有路径的两所城市的名称:

输出形式

从xx到xx的所有路径如下:

将所有路径(城市编号组成)存至用户指定的文件中。

程序功能

该程序可以通过构建一个图用来表示各个城市之间是否有高速公路连通的关系,可以实现查询两城市间所有路径的功能

测试数据

①请输入城市总数: 3

请依次输入城市编号:0001 0002 0003 有几对城市间有高速公路?3

请输入第一对连接城市的高速公路:0001 0002 请输入第二对连接城市的高速公路:0002 0003 请输入第三对连接城市的高速公路:0001 0003

请输入请输入需查询所有路径的两所城市的名称:0001 0003 从城市0001到0003的所有简单路径如下: 001->003

001->002->003

所有路径已存入文件中。

②请输入城市总数: 3

请依次输入城市编号:001 002 003 有几对城市间有高速公路?2

请输入第一对连接城市的高速公路:001 002 请输入第二对连接城市的高速公路:002 003

请输入请输入需查询所有路径的两所城市的名称:0001 0003 从城市0001到0003的所有简单路径如下:

001->002->003

所有路径已存入文件中。

③请输入城市总数: 3

请依次输入城市编号:001 002 003 有几对城市间有高速公路? 0

请输入请输入需查询所有路径的两所城市的名称:0001 0003 从城市0001到0003的无简单路径

④请输入城市总数: 4

请依次输入城市编号:001 002 003 004 有几对城市间有高速公路? 5

请输入第一对连接城市的高速公路:001 002 请输入第二对连接城市的高速公路:002 003 请输入第三对连接城市的高速公路:003 004 请输入第四对连接城市的高速公路:001 004 请输入第五对连接城市的高速公路:001 003

请输入请输入需查询所有路径的两所城市的名称:0001 0004 从城市0001到0003的所有简单路径如下: 0001->0004

0001->0003->0004 0001->0002->0004

0001->0002->0003->0004 0001->0003->0002->0004 所有路径已存入文件中。

⑤请输入城市总数: -1 结束程序

二. 概要设计

抽象数据类型

因为各个城市间的是否有高速公路连通的关系是非线性的,而且具有结构网状特性,并且高速公路是无向的,所以选择无向图来表示各个城市间的连通关系。 图的ADT设计:

数据对象:G=(V,E),其中V表示顶点集合,E表示边集合 数据关系:VR={| v,w∈V 且 P(v,w)}