您的位置:首页 > 其它

用无向带权图实现校园导航系统

2015-04-15 23:14 204 查看
学校数据结构的课程实验之一。

用到的数据结构:无向带权图

用到的算法:Floyd最短路径算法,深度优先搜索(递归实现)

需求分析:

  设计一个校园导航程序,为访客提供各种信息查询服务:

1. 以图中各顶点表示校内各单位地点,存放单位名称,代号,简介等信息;以边表示路径,存放路径长度等相关信息。

2. 图中任意单位地点相关信息的查询。

3. 图中任意单位的问路查询,即查询任意两个单位之间的一条最短的路径。

2. 从图中任意单位地点出发的一条深度优先遍历路径。

主函数:

#include <iostream>
#include "School.h"
using namespace std;

int main()
{
School mySchool=School("School.txt");
char choice='y';
while(choice=='y')
{
cout << "请选择操作"<<endl;
cout << "--------------------------------" << endl;
cout << "1----查看地点列表" << endl;
cout << "2----查看地点简介" << endl;
cout << "3----查询最短路径" << endl;
cout << "4----从一点出发遍历" << endl;
cout << "5----任意一点的可直达地点" << endl;
cout << "--------------------------------" << endl;
int option;
cin >> option;
switch (option)
{
case 1: mySchool.display(); break;
case 2: mySchool.search(); break;
case 3: mySchool.path(); break;
case 4: mySchool.traverse(); break;
case 5: mySchool.reachable(); break;
}
cout << "继续吗?[y/n]";
cin >> choice;
}
return 0;
}


图类(邻接矩阵存储,因有向图是无向图的超集,所以可以定义为有向图,邻接矩阵为对称阵)

0
前门
南门;车辆进出
1
教一楼
阶梯教室;英语教室
2
教二楼
普通教室
3
教三楼
实验室;办公室;阶梯教室
4
学一公寓
男生宿舍
5
学二公寓
男生宿舍
6
学三公寓
女生宿舍
7
学四公寓
男生宿舍
8
食堂
一层;二层;清真
9
水房
在食堂旁边
10
操场
300米一圈的跑道
11
图书馆
借阅部;自习室
12
后门
北门;取快递
#
0   1   4   8   6 100 100  10 100   1 100  10 100
1   0   3   4   5 100  10 100   1 100   1 100 100
4   3   0  10   1   7 100   6 100  10 100 100   8
8   4  10   0   2 100   3 100 100   6   5   9   7
6   5   1   2   0   3   6   9 100   7   9   8   5
100 100   7 100   3   0 100   5 100   6   7   8   4
100  10 100   3   6 100   0   2   7   2   9  10   2
10  100   6 100   9   5   2   0   4 100   2   3   7
100   1 100 100 100 100   7   4   0  10   4   5   1
1   100  10   6   7   6   2 100  10   0   8   5   7
100   1 100   5   9   7   9   2   4   8   0   2   9
10  100 100   9   8   8   10  3   5   5   2   0 100
100 100   8   7   5   4   2   7   1   7   9  100  0


School.txt
  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: