设计一个校园导游程序,为来学校的用户提供景点信息及路径查询服务。
① “景点信息查询”
系统为来访客人提供图中任意景点相关信息的查询功能。
用户选择该选项后,提示用户输入要查询的景点编号,根据景点编号显示出
该景点的名称和简介。
② “校门口到其他景点的路经查询”
系统为来访客人提供从校门口到图中任意景点的问路查询功能。
用户选择该选项后,提示用户输入要到达的景点编号,根据该景点编号显示
出从校门口到该景点的最短路径长度及路径信息(即路径上的顶点序列)
③ “校园各景点间的路经查询”
系统为为来访客人提供图中任意景点间的问路查询;
用户选择该选项后,提示用户输入起点编号及终点编号,根据起点和终点编
号确定起点到终点的最短路径及长度并直观显示。
①设计学校的校园平面图(有向图,任意两点间的去边和回边长度相等),
所含景点不少于 10 个,以图中顶点表示校内各景点,存放景点名称、代号、简
介等信息,以边表示路径,存放路径长度等相关信息。
②利用教材上建立图的邻接矩阵的算法实现图的存储。
③根据查找算法实现功能 1。
④根据迪杰斯特拉算法和教材上的参考程序实现功能 2。
⑤根据弗洛伊德算法和教材上的参考程序实现功能 3
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <setjmp.h>
using namespace std;
#define MaxInt 32767//表示正无穷
#define MVNum 100//最大顶点数
#define OK 1
#define ERROR -1
#define OVERFLOW -2
jmp_buf j;
typedef struct
{
char name[10];
char info[50];
}Place;
typedef int Status;
typedef Place VerTexType;
typedef int ArcType;
typedef struct
{
VerTexType vexs[MVNum];//顶点表
ArcType arcs[MVNum][MVNum];//邻接矩阵
int vexnum,arcnum;//图的当前点数和边数
}AMGraph;
typedef struct stack
{
int *base;
int *top;
int stacksize;
}SqStack;
int path[11][11];
int D[11][11];
bool isVisited[MaxInt];
SqStack S;
Status CreateUDN (AMGraph &G)//创建地图的邻接矩阵模型
{
G.vexnum = 11;
G.arcnum = 15;
strcpy(G.vexs[0].name,"正门");strcpy(G.vexs[0].info,"学校的正门。校训:博学深思,参天尽物");
strcpy(G.vexs[1].name,"主楼");strcpy(G.vexs[1].info,"学校的行政办公中心");
strcpy(G.vexs[2].name,"二号楼");strcpy(G.vexs[2].info,"二号楼,学校教学场所,外语学院的教学楼。");
strcpy(G.vexs[3].name,"外事三号楼");strcpy(G.vexs[3].info,"有关出国留学事务的咨询办公楼");
strcpy(G.vexs[4].name,"联通广场");strcpy(G.vexs[4].info,"标准化跑道,适宜锻炼身体的场所");
strcpy(G.vexs[5].name,"一号楼");strcpy(G.vexs[5].info,"一号楼,学校的机房教学楼之一,有七十年左右的历史");
strcpy(G.vexs[6].name,"图书馆");strcpy(G.vexs[6].info,"藏书丰富,设施良好,知识的摇篮");
strcpy(G.vexs[7].name,"汇文楼");strcpy(G.vexs[7].info,"学校的主要教学楼,承载黑大学子的梦想");
strcpy(G.vexs[8].name,"实验楼");strcpy(G.vexs[8].info,"雅思考试考场之一,标准化机房。");
strcpy(G.vexs[9].name,"四号楼");strcpy(G.vexs[9].info,"计算机学院、创业教育学院");
strcpy(G.vexs[10].name,"三号楼");strcpy(G.vexs[10].info,"C区主要教学楼");
for(int i