《数据结构课程设计》
课程题目:gdou校园最短路径
课程编号:0号题目
学生姓名:李诗莹
学生学号:201311671215
学生班级:信息管理与信息系统1132班
任课老师:易学明老师
一. 问题描述……………………………………………1
二. 问题分析……………………………………………1
三. 逻辑结构和存储结构设计…………………………1
四. 算法设计……………………………………………1
五. 源代码………………………………………………7
六. 程序运行结果………………………………………15
七. 心得…………………………………………………17
八. 参考文献:
一.问题描述
GDOU是真是一个好地方,校园如一座大花园,美丽而宽广。校园有许多建筑如教学楼、饭堂、宿舍楼、图书馆、体育馆、运动场、商业街、医院等,还有一些著名的风景点。现请根据学校的平面图,找出一些重要的场所,画出学校的平面图(场所可以根据其重要性适当减少),根据实际画出不同点间的路径,并估算每两个场所间的路径长。请设计数据结构并编程,当给出一个出发点和要到达另外一个场所的信息时,请给出最佳路径,并输出路径相关信息。
二.问题分析
用无向网表示学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。要求能够回答有关景点介绍、游览路径等问题。
游客通过终端可询问:
(1)从某一景点到另一景点的最短路径。
(2)游客从大门进入,选取一条最佳路线。
(3)使游客可以不重复地浏览各景点。
[基本设计]
(1)将导游图看作一张带权无向图,顶点表示公园的各个景点,边表示各景点之间的道路,
边上的权值表示距离.为此图选择适当的数据结构。
(2)把各种路径都显示给游客,由游客自己选择浏览路线。
(3)画出景点分布图于屏幕上。
[实现方法]
(1)构造一个无向图G并用邻接矩阵来存储。
(2)利用迪杰斯特拉算法来计算出起点到各个顶点之间的最短路径用二维数组p[i][]来记录,
最短路径长度就用一维数组d[i]存放;i的范围:0~30。
(3)根据起点和终点输出最短路径和路径长度。
三.逻辑结构和存储结构设计
采用图结构类型(mgraph)存储抽象校园图的信息,其中,各景点间的邻接关系用图的邻接矩阵(adjmatrix)存储,景点信息用结构数组(vexs)存储,其中每个数组元素是一个结构变量,包含景点编号、景点名称及景点介绍三个变量;图的顶点个数及边的个数由分量vexnum、arcnum表示,它们是整形数据,此外,还设置了三个全局变量:visit[]数组用于存储顶点是否被访问的标志,d[]数组用于存放边上的权值或存储查找路径的编号;campus是一个图结构的全局变量。
四. 算法设计
(一).图结构
0.广东海洋大学大门 1.水生博物馆 2蝴蝶湖
3.商中 4.教工饭堂 5.主楼
6.体育馆 7.三饭 8.钟海楼
9.图书馆 10.东区宿舍 11.四饭
12.中区宿舍 13.科技楼 14.西区宿舍
15.校医院 16.一饭 17.东区运动场
18.小剧院 19.二饭
(二)系统功能设计
(1)学校景点介绍:选取广东海洋大学的20个景点:广东海洋大门,蝴蝶湖,水生博物馆,主楼,钟海楼,图书 馆,体育馆,小剧院等20个景点。先对图进行初始化,初始化由函数initpraph()实现,依据读入的图的顶点 个数和边的个数,分别初始化图结构中图的顶点向量数组和图的邻接矩阵,学校景点介绍函 数 iandianjieshao()实现,用户选择该功能,系统即能输出学校全部景点的信息,包括景点编号、景点名称和景点简介
(2)查看游览路线(提供图中任意景点间相关的信息供用户查看)
查看游览路线由函数allpath()实现,该功能采用迪杰斯特拉算法实现。用户使用该功能,系统根据用户输入 的起始景点编号,求从该景点到其
他路径的最短路径路线和距离
(3)查询景点间的最短路径
查询最短路径由函数floyd()实现,该功能采用费罗伊德算法实现,当用户选用该功能,系统根据用户输入的起 始景点编号和目的地编号,查询任意两个景点之间的最短路径路线和距离
(4)退出
退出校园导游系统,由exit(0)函数实现
<