- 64
- 0
- 约5.73千字
- 约 9页
- 2018-02-20 发布于重庆
- 举报
算法与数据结构程序设计实验报告校园导游咨询
算 法 与 数 据 结 构
课 程 设 计 报 告
题 目: 校园导游咨询
班 级:
学 号:
姓 名:
指导教师:
成 绩:
2012年 1 月 6 日
题目
校园导游咨询
(1)基本要求:
① 设计你的学校的校园平面图,所含景点不少于10个。以图中顶点表示学校各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。
② 为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。
③ 为来访客人提供图中任意景点相关信息的查询。
(2)测试数据:由读者根据实际情况指定。
(3)实现提示:一般情况下,校园的道路是双向通行的,可设校园平面图是一个无向网。顶点和边均含有相关信息。
设计思想
1.首先手动给校园图赋上相关信息(景点名称、代号、简介),路径及路径长度。得到一个模拟的校园平面图:
2.用邻接矩阵存储校园图:
得出邻接矩阵:
1 2 3 4 5 6 7 8 9 10
0 12 38 ∞ ∞ ∞ ∞ ∞ ∞ ∞ 1
12 0 ∞ 21 ∞ ∞ ∞ ∞ ∞ 46 2
38 ∞ 0 ∞ 28 ∞ ∞ ∞ ∞ ∞ 3
60 21 20 0 ∞ ∞ 22 15 ∞ ∞ 4
∞ ∞ 28 ∞ 0 ∞ ∞ ∞ ∞ ∞ 5
∞ ∞ ∞ ∞ 36 0 40 ∞ ∞ ∞ 6
∞ ∞ 18 22 ∞ 40 0 ∞ ∞ ∞ 7
∞ ∞ ∞ ∞ ∞ ∞ ∞ 0 21 ∞ 8
∞ ∞ ∞ 15 ∞ 20 ∞ 21 0 ∞ 9
∞ 46 ∞ ∞ ∞ ∞ ∞ ∞ 50 0 10
3. 用数据结构知识创建校园图
(1)先定义节点个数N,边的值(cost),节点(景点名称、景点信息),邻接点,边,顶点向量,当前顶点数和边数。
(2)节点和边的相关信息都弄好了后,校园图也就创建好了。
4.利用introduce函数来设计景点介绍,并利用switch(){ case 1:case2:…}语句给10个节点赋上相应的名称,给各节点添加相应的介绍信息。
5.用shortestdistance函数来求任意两景点之间的最短路径。
6. 用floyed函数求两个景点的最短路径。
7.用main函数来输出结果:用switch语句分别输出,查找景点相关信息时调用introduce函数;要查找任意两景点之间的最短路径时,先输入你目前所在的位置,再输入你的目的地,最后调用shortestdistance函数。主函数主要是调用这三个函数,实现上述三个功能。
算法和数据结构描述/*定义符号常量*/#define INT_MAX 10000??#define n 10/*定义全局变量*/int cost[n][n];/* 边的值*/?
?int shortest[n][n];/* 两点间的最短距离*/int path[n][n];/* 经过的景点*//*自定义函数原型说明*/void introduce();? 景点介绍
int shortestdistance();?? 要查找的两景点的最短距离void floyed();?? 用floyed算法求两个景点的最短路径void display(int i,int j);?? 打印两个景点的路径及最短距离
三、软件结构图及流程图
软件结构图即函数调用图
如下图
流程图即一般流程图
测试结果
分析与探讨
1. 时间复杂度分析:该程序中涉及了Floyd-Warshall 算法时间复杂度O(n^3),只要有存下邻接矩阵的空间,时间一般没问题,并且不必担心负权边的问题,这个算法通过考虑最佳子路径来得到最佳路径。Floyd-Warshall 算法从任意一条单边路径开始。所有两点之间的距离是边的权,或者无穷大,如果两点之间没有边相连。对于每一对顶点 u 和 v,看看是否存在一个顶点 w 使得从 u 到 w 再到 v 比己知的路径更短。如果是更新它。广度优先搜索广度优先搜索按照从起点到其他点的路径的长度,从短到
原创力文档

文档评论(0)