当前位置:
文档之家› 全国交通咨询模拟数据结构课程设计
全国交通咨询模拟数据结构课程设计
(2)数据的逻辑结构:根据设计任务的描述,其城市之间的旅游交通问题是典 型的图结构,可看作为有向图,图的顶点是城市,边是城市之间所耗费的时间(要 包括中转站的等候时间)或旅费。
(3)数据的存储结构:采用邻接表和邻接矩阵都可作为数据的存储结构,但当 邻接边不多时,宜采用邻接表,以提高空间的存储效率。这里采用邻接表作为数 据的存储结构。
方城市的出发信息,里程、时间、费用等)及最终结果。即输出依次于何时何地 乘坐几点的飞机或火车于何时到达何地; 最终所需的最快需要多长时间才能到达 及旅费,或者最少需要多少旅费才能到达及时间。
(6)主程序可以有系统界面、菜单;也可用命令提示方式;选择功能模块执 行,要求在程序运行过程中可以反复操作。
(2).详细设计思想:
迪杰斯特拉(Dijkstra)算法的基本思想是:
设置两个顶点的集合S和T=V—S,集合S中存放已找到最短路径的顶点,集合T存放当前还未找到最短路径的顶点。初始状态时,集合S中只包含源点vO,然
后不断从集合T中选取到顶点vO路径长度最短的顶点u加入到集合S中,集合S每加入一个新的顶点u,都要修改顶点vO到集合T中剩余顶点的最短路径长度 值,集合T中各顶点新的最短路径长度值为原来的最短路径长度值与顶点u的最
短路径长度值加上u到该顶点的路径长度值中的较小值。 此过程不断重复,直到 集合T的顶点全部加入到S中为止。
下面讨论基于邻接表的存储结构求两点间最短路径的方法:
根据迪杰斯特拉(Dijkstra)算法所依据的原理:若按长度递增的次序生成从 源点V0到其它顶点的最短路径,贝U当前正在生成的最短路径上除终点以外,其 余顶点的最短路径均已生成(将源点的最短路径看作是已生成的源点到其自身的 长度为0的路径)。
本题所要求的交通系统是一个有向带权图结构,考虑到要求该系统有动态 增加飞机和列车航班的功能,因而采用邻接表的形式存储:对每个顶点建立一个
单链表,单链表中的子结点表示以该顶点连接的弧,单链表中子结点的顺序可以
按权值递增的顺序排列,表头结点按顺序存储。题目中提到要提供三种策略,最 快到达,最省钱到达和最少中转次数策略,前两种策略采用迪杰斯特拉算法思想, 其中最快到达的权值为到达两城市所需的最短时间,最省钱到达的权值为到达两 城市所到达两城市所需的最少中转次数。
(4)用不同的功能模块对城市信息和交通信息进行编辑。添加、修改、删除
功能可用菜单方式或命令提示方式。只要能方便的对城市信息和交通信息进行管 理即可,但要注意人机界面。
(5)最优决策功能模块(fast or province)。
1读入城市信息和交通信息,用邻接表生成含权网络,表头数组中的元素 存放城市名及对方城市到达该元素所代表城市的所有信息; 表头数组中的元素所 对应的单链表存放与该元素所代表的城市有交通联系的城市(代码、里程、航班、 列车车次)。
按照这一思想,构造以下算法:
设S=S =U={},建立数组PATH[n],用来存储V0到各终点的最短路径,初 值均置为空集。建立数组BOOLF[n],F[i]表示序号为i的表头结点的单链表中 所有子结点已或未全部找到,初值置为FALSE建立数组float dist[n],dist[i]表示序号为i的表头结点到V0的最短权值(这里是时间或费用),显然
存响应的信息。开始时,栈(队列)中只有出发地城市,随着对栈(队列)顶(首)城市 有交通联系的城市求得决策值(最短时间或最小的费用),若该值是局部最优值且 该城市不在栈(队列)中,则进栈(队列),直至栈(队列)为空,本题采用队列实现。
3输出结果:从目的城市出发,搜索到出发城市,所经过的城市均入栈(队
列),再逐一出栈栈(队列)中的城市,输出保存在表头数组中对应城市的信息(对
数据结构课程设计报告
题目:
一.需求分析
1.程序设计任务: 从中国地图平面图中选取部分城市,抽象为程序所需要图的结点,并以城 市间的列车路线和飞机路线, 作为图结点中的弧信息, 设计一个全国交通咨询模 拟系统。利用该系统实现两种最优决策:最快到达或最省钱到达。
2.明确规定:
(1)输入形式和输入值的范围: 每条飞机弧或者火车弧涉及的信息量很多,包括:起始城市、目的城市、出 发时间、到达时间、班次以及费用。作为管理员要输入的信息包括以上信息,而 作为用户或者客户,要输入的信息有起始城市和目的城市, 并选择何种最优决策。
dist[V0]=0,其他顶点的dist初值置为^。建立数组BOOLS[n],IS[i]表示序 号为i的顶点是否在S中,初值均置为FALSE
(1)VX=V0;最短的最短路径为PATH[0]=[V0]
(2)S=S+VX;(集合的并计算)
IS[VX]=TRUE;
编辑,添加或删除。
b.建立一个全国交通咨询系统,该系统具备自动查找任意两城市间铁路、飞机交 通的最短路径和最少花费及中转次数最少等功能。
c.初始化交通系统有两种方式,键盘和文档。
2.
1.
(1)、总体设计
(1)数据存储:城市信息(城市名、代码)、交通信息(城市间的里程、各航班和 列车时刻)存储于磁盘文件。建议把城市信息存于文件前面,交通信息存于文件 的后面,用fread和fwrite函数操作。
(2)输出形式: 按用户提供的最优决策的不同而输出不同的信息, 其中输出的所搭飞机或火 车的班次及其起始地点和终点、 起始时间和出发时间还有相关的最优信息, 比如 最快经多少时间到达、最省钱多少钱到达和最少经多少中转站到达。
(3)程序所能达到的功能
a.该系统有供用户选择的菜单和交互性。可以对城市、列车车次和飞机航班进行
2根据具体最优决策的要求,用Dijkstra算法求出出发城市到其它各城市
的最优值(最短时间或最小的费用),搜索过程中所经过城市的局部最优信息都保 存在邻接表的表头数组中。其目的城市所代表的元素中就保存了所需的最优决策 结果。这过程中,要用队列或栈保存局部最优决策值(局部最短的时间或最省的
费用)变小的城市,其相应的初始值可为%,并在表头数组对应的城市元素中保