数据结构与算法/大实验:校园导游系统

本文介绍了一个使用数据结构与算法设计的校园导游程序,包括景点信息查询、从校门口到其他景点的路径查询以及任意两点间的路径查询功能。程序采用邻接矩阵存储有向图,并运用迪杰斯特拉算法和弗洛伊德算法计算最短路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设计一个校园导游程序,为来学校的用户提供景点信息及路径查询服务。

① “景点信息查询”

系统为来访客人提供图中任意景点相关信息的查询功能。

用户选择该选项后,提示用户输入要查询的景点编号,根据景点编号显示出

该景点的名称和简介。

② “校门口到其他景点的路经查询”

系统为来访客人提供从校门口到图中任意景点的问路查询功能。

用户选择该选项后,提示用户输入要到达的景点编号,根据该景点编号显示

出从校门口到该景点的最短路径长度及路径信息(即路径上的顶点序列)

③ “校园各景点间的路经查询”

系统为为来访客人提供图中任意景点间的问路查询;

 用户选择该选项后,提示用户输入起点编号及终点编号,根据起点和终点编

号确定起点到终点的最短路径及长度并直观显示。

①设计学校的校园平面图(有向图,任意两点间的去边和回边长度相等),

所含景点不少于 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值