校园导游咨询
【问题描述】
设计一个校园导游程序,为来访的客人提供各种信息查询服务。
【基本要求】
- 设计你的学校的校园平面图,所含景点不少于10个。以图中顶点表示学校各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。
- 为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。
- 为来访客人提供图中任意景点相关信息的查询。
【测试数据】
由读者根据实际情况指定。
【实现提示】
一般情况下,校园的道路是双向通行的,可设校园平面图是一个无向网。顶点和边均含有相关信息。
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
#define OK 1
#define ERROR 0
#define MaxInt 32767 //极大值
#define MVNum 50 //最大顶点数
typedef int Status;
typedef string VerTexType; //假设顶点的数据类型为string类型
typedef string InfoType;
typedef int ArcType; //假设边的权值类型为整型
bool visited[MVNum]; //访问标志数组,值为"false"时代表该顶点没被访问,值为"true"时代表该顶点已被访问
typedef struct vex{
VerTexType name;
InfoType otherinfo;
}vex, *vexptr;
//图的邻接矩阵存储表示
typedef struct{
vex vexs[MVNum]; //顶点表
ArcType arcs[MVNum] [MVNum]; //邻接矩阵
int vexnum, arcnum; //图的当前点数和边数
}AMGraph;
//获取顶点位置:若G中存在顶点u,则返回该顶点在图中的位置;否则返回其他信息
int LocateVex(AMGraph G, VerTexType u){
int index = -1; //原始下标,没找到元素返回-1
for(int i = 0; i < G.vexnum; i++){ //遍历顶点数组
if(u == G.vexs[i].name){
index = i; //记录元素下标
}
}
return index; //返回下标
}
//采用邻接矩阵表示法创建无向网G,表示地图
Status CreateUDN(AMGraph &G){
G.vexnum = 13;
G.arcnum = 18;
G.vexs[0].name = "菊苑饭堂";
G.vexs[0].otherinfo = "菊苑饭堂简介";
G.vexs[1].name = "梅苑饭堂