背景:
实现要求:
- 根据图的抽象数据类型的定义,请采用邻接矩阵来存储图1,采用邻接表来存储图2,并完成如下操作:
- 对图1无向图进行深度优先遍历和广度优先遍历。
- 对图1无向图采用Kruskal算法和Prim算法得出最小生成树。
- 对图2有向图进行拓扑排序,并输出。
实现无向图类和有向图类,编写测试main()函数,实例化无向图类对象和有向图类对象。
2.编制校园导航程序。依托青岛理工大学校园,给出主要建筑的名称信息及有路线连通的建筑之间的距离,抽象为图的数据结构,编程给出从任一建筑出发去校园另一建筑位置的最优路线及其距离。
实现要求:
构建带权有向图,并在附录中给出;
(2)实现Dijkstra算法或者Floyd算法;
(3)程序运行时,给出校园所有建筑物供用户选择,选出起点和终点,给出最短路径及距离。
实现提示:
(3)测试数据(或者自定义其他输入,或者使用文件)。
过程效果:
1-DFS和BFS(对图1无向图进行深度优先遍历和广度优先遍历):
2-对图1无向图采用Kruskal算法和Prim算法得出最小生成树:
3-对图2有向图进行拓扑排序,并输出:
- 编写测试main函数
- ⽤户界⾯能够进⾏交互;
4-:实现Dijkstra算法:
主要代码:
//联系请加V:zew1040994588
//源码获取、定制咨询、非开源int main() {Graph g;g.addEdge(0, 1, 6);g.addEdge(0, 2, 1);g.addEdge(0, 3, 5);g.addEdge(1, 2, 5);g.addEdge(2, 3, 5);g.addEdge(1, 4, 3);g.addEdge(2, 4, 6); g.addEdge(2, 5, 4);g.addEdge(3, 5, 2);g.addEdge(4, 5, 6);/*g.addEdge(0, 1, 4);g.addEdge(0, 2, 3);g.addEdge(1, 3, 2);g.addEdge(1, 4, 7);g.addEdge(2, 4, 1);g.addEdge(3, 4, 5);g.addEdge(3, 5, 6);*/cout << "DFS搜索,从节点0[代表图中1]开始 ";g.DFS(0);cout << endl;cout << "BFS搜索,从节点0[代表图中1]开始";g.BFS(0);cout << endl;return 0;
}
//联系请加V:zew1040994588
//源码获取、定制咨询、非开源int main() {Graph g(7);g.addEdge(0, 2);g.addEdge(2, 3);g.addEdge(1, 3);g.addEdge(1, 6);g.addEdge(1, 4);g.addEdge(3, 5);g.addEdge(6, 5);g.addEdge(3, 4);g.topologicalSort();return 0;
}