资源简介
问题描述:设计一个校园航程序,为来访的客人提供各种信息查询服务。a. 设计大学的校园平面图,所含单位地点不少于十个。以图中各顶点表示校内各单位地点,存放单位名称,代号,简介等信息 ;以边表示路径,存放路径长度等相关信息。b. 为来访客人提供图中任意单位相关信息的查询。c. 为来访客人提供图中任意单位的问路查询,即查询任意两个单位之间的一条最短的路径。
数据结构:用图来描述校园内各个单位,顶点包括名称和简介,边包括两个端点和距离。
结果形式:输入要查询的单位,显示单位简介。输入两个单位,计算两个单位地点间最短距离。
测试数据:校园单位可包括:前门、后门、图书馆、教一楼、教二楼、教三楼、操场、食堂、水房、学一、二、三、四楼等。
代码片段和文件信息
typedef int VRType;
typedef char InfoType;
#define MAX_NAME 5 // 顶点字符串的最大长度+1
#define MAX_INFO 20 // 相关信息字符串的最大长度+1
typedef char VertexType[MAX_NAME];
#include“Graph_Matrix.h“
#include“Graph.h“
typedef int PathMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; // 路径矩阵,二维数组MAX_VERTEX_NUM的定义在Graph_Matrix中
typedef int ShortPathTable[MAX_VERTEX_NUM]; // 最短距离表,一维数组
void ShortestPath_DIJ(MGraph Gint v0int v1PathMatrix PShortPathTable D)
{ // 用Dijkstra算法求有向网G的v0顶点到其余顶点v的最短路径P[v]及带权长度
// D[v]。若P[v][w]为TRUE,则w是从v0到v当前求得最短路径上的顶点。
// final[v]为TRUE当且仅当v∈S,即已经求得从v0到v的最短路径 算法7.15
int vwijmin;
int flag=0;
Status final[MAX_VERTEX_NUM]; // 辅助矩阵,为真表示该顶点到v0的最短距离已求出,初值为假
for(v=0;v {
final[v]=FALSE; // 设初值
D[v]=G.arcs[v0][v].adj; // D[]存放v0到v的最短距离,初值为v0到v的直接距离
for(w=0;w P[v][w]=FALSE; // 设P[][]初值为FALSE,没有路径
if(D[v] P[v][v0]=P[v][v]=TRUE; // 一维数组p[v][]表示源点v0到v最短路径通过的顶点
}
D[v0]=0; // v0到v0距离为0
final[v0]=TRUE; // v0顶点并入S集
printf(“%s->“G.vexs[v0]);//经过路径的起始顶点
for(i=1;i { // 开始主循环,每次求得v0到某个顶点v的最短路径,并将v并入S集
min=INFINITY; // 当前所知离v0顶点的最近距离,设初值为∞
for(w=0;w if(!final[w]&&D[w] {
v=w;
if(v==v1)
flag=1;
min=D[w];
}
final[v]=TRUE; // 将v并入S集
//下面语句输出了经过的路径,剔除了不需要的顶点
if(flag==0)
printf(“%s->“G.vexs[v]);
else if(v==v1)
printf(“%s“G.vexs[v]);//结束顶点
for(w=0;w if(!final[w]&&min { // w不属于S集且v0→v→w的距离<目前v0→w的距离
D[w]=min+G.arcs[v][w].adj; // 更新D[w]
for(j=0;j P[w][j]=P[v][j];
P[w][w]=TRUE;
}
}
}
void main()
{
int ijv0v1;
int stopflag=0;
VertexType ab;
MGraph g;
PathMatrix p; // 二维数组,路径矩阵
ShortPathTable d; // 一维数组,最短距离表
printf(“输入顶点信息时使用学校地点的代码:\n“);
printf(“v0:前门;v1:后门;v2:图书馆;v3:教一楼\n“);
printf(“\n“);
printf(“v4:食堂;v5:操场;v6:实验楼;v7:学一楼\n“);
printf(“\n“);
printf(“v8:水房;v9:学二;va:学三楼;vb:学四楼\n“);
printf(“\n“);
CreateUDN(g); // 构造无向网g
Display(g); // 输出无向网g
do
{
printf(“输入要查询的两个点(以空格隔开):\n“);
scanf(“%s%s%*c“ab); //%*c吃掉回车符
for(i=0;i {
if(strcmp(g.vexs[i]a)==0)
v0=i;
if(strcmp(g.vexs[i]b)==0)
v1=i;
}
printf(“经过的路径为:“);
ShortestPath_DIJ(gv0v1pd);//以g中位置为0的顶点为源点,球其到其余各顶点的最短距离。存于d中
printf(“\n“);
printf(“%s到顶点%s的最短路径长度为(若是-1,则表示没有通路):\n“ab);
for(i=0;i if(i!=0&&strcmp(g.vexs[i]b)==0)
{
if(d[i]>=INFINITY)
d[i]=-1;//若两点间没有通路,用“-1”表示
printf(“%s-%s:%d“g.vexs[v0]g.vexs[i]d[i]);
}
printf(“\n“);
printf(“输入stopflag‘1‘为结束程序,‘0‘为继续查询:\n“);
stopfla
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2223104 2009-04-23 16:58 5-daohang\daohang.ncb
文件 887 2009-04-15 18:54 5-daohang\daohang.sln
..A..H. 18432 2009-04-23 16:58 5-daohang\daohang.suo
文件 33280 2009-04-23 16:52 5-daohang\Debug\daohang.exe
文件 335988 2009-04-23 16:52 5-daohang\Debug\daohang.ilk
文件 510976 2009-04-23 16:52 5-daohang\Debug\daohang.pdb
文件 31744 2009-04-22 19:08 5-daohang\Debug\tongxin.exe
文件 330948 2009-04-22 19:08 5-daohang\Debug\tongxin.ilk
文件 519168 2009-04-22 19:08 5-daohang\Debug\tongxin.pdb
文件 11772 2009-04-23 16:52 5-daohang\tongxin\Debug\BuildLog.htm
文件 621 2009-04-23 16:52 5-daohang\tongxin\Debug\daohang.exe.intermediate.manifest
文件 39892 2009-04-23 16:52 5-daohang\tongxin\Debug\Main.obj
文件 65 2009-04-23 16:52 5-daohang\tongxin\Debug\mt.dep
文件 621 2009-04-22 19:08 5-daohang\tongxin\Debug\tongxin.exe.intermediate.manifest
文件 257024 2009-04-23 16:52 5-daohang\tongxin\Debug\vc90.idb
文件 217088 2009-04-23 16:52 5-daohang\tongxin\Debug\vc90.pdb
文件 2290 2009-04-23 14:52 5-daohang\tongxin\Graph.h
文件 601 2009-04-15 19:09 5-daohang\tongxin\Graph_Matrix.h
文件 4103 2009-04-23 16:52 5-daohang\tongxin\Main.cpp
文件 3783 2009-04-22 19:14 5-daohang\tongxin\tongxin.vcproj
文件 1411 2009-04-23 16:58 5-daohang\tongxin\tongxin.vcproj.Dave-PC.文刀.user
文件 1174528 2009-04-22 20:22 5-daohang\tongxin.ncb
文件 122880 2009-05-13 17:07 5-校园导航.doc
目录 0 2009-04-23 18:10 5-daohang\tongxin\Debug
目录 0 2009-04-23 18:10 5-daohang\Debug
目录 0 2009-04-23 18:10 5-daohang\tongxin
目录 0 2009-04-23 18:10 5-daohang
----------- --------- ---------- ----- ----
5841206 27
............此处省略0个文件信息
相关资源
- 数据结构设计运动会管理系统.doc
- 很好的数据结构课件 西北大学
- 合肥工业大学数据结构ppt胡学钢
- 数据结构经典算法代码实现
- 武汉理工大学数据结构算法与综合实
- 2017--山东大学数据结构实验代码
- 郝斌 老师 数据结构 课堂笔记 含代码
- 数据结构考研题1800习题+答案pdf版
- 数据结构和算法分析 历年试卷 浙江大
- 算法与数据结构考研试题精析1800习题
- 国家集训队2019论文集.pdf
- 算法与数据结构 张乃孝版
- 数据结构算法演示系统DSDemo
- NOIP 数据结构课件
- 数据结构严蔚敏算法源码及演示系统
- 数据结构及算法演示系统
- 算法和数据结构
- 数据结构算法演示系统DSDEMO类C描述语
- 目前最完整的数据结构1800题内含完整
- 数据结构算法演示系统
- 数据结构 刘大有 代码
- 数据结构算法演示绝对经典
- 杭电计院数据结构期末试题
- 厦大考研903数据结构历年真题及答案
- 实现快速排序
- 判断一个有向图中是否存在回路,并
- 厦大903数据结构历年本科期末试题
- 数据结构实现顺序结构、动态链表结
- 数据结构课件ppt全
- 数据结构与程序设计-PDF原版-高清英文
评论
共有 条评论