当前位置: 首页 > news >正文

C++实现DFS、BFS、Kruskal算法和Prim算法、拓扑排序、Dijkstra算法

背景:

实现要求:

  1. 根据图的抽象数据类型的定义,请采用邻接矩阵来存储图1,采用邻接表来存储图2,并完成如下操作:
  2. 对图1无向图进行深度优先遍历和广度优先遍历
  3. 对图1无向图采Kruskal算法和Prim算法得出最小生成树。
  4. 对图2有向图进行拓扑排序,并输出。

实现无向图类和有向图类,编写测试main()函数,实例化无向图类对象和有向图类对象。

2.编制校园导航程序。依托青岛理工大学校园,给出主要建筑的名称信息及有路线连通的建筑之间的距离,抽象为图的数据结构,编程给出从任一建筑出发去校园另一建筑位置的最优路线及其距离。

实现要求:

构建带权有向图,并在附录中给出;

(2)实现Dijkstra算法或者Floyd算法

(3)程序运行时,给出校园所有建筑物供用户选择,选出起点和终点,给出最短路径及距离。

实现提示:

(3)测试数据(或者自定义其他输入,或者使用文件)。

过程效果:

1-DFS和BFS(对图1无向图进行深度优先遍历和广度优先遍历):

2-对图1无向图采用Kruskal算法和Prim算法得出最小生成树:

3-对图2有向图进行拓扑排序,并输出:

  1. 编写测试main函数
  2. ⽤户界⾯能够进⾏交互;

4-:实现Dijkstra算法:

主要代码:

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;
}
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;
}

http://www.lryc.cn/news/255214.html

相关文章:

  • Spring 依赖注入的三种方式优缺点
  • 代理模式介绍(静态代理、jdk动态代理、cglib代理)
  • 设计模式基础——工厂模式剖析(2/2)
  • spark3.x 读取hudi报错
  • 微信小程序中block和View组件的使用区别
  • 代码混淆技术探究与工具选择
  • selenium 解决 id定位、class定位中,属性值带空格的解决办法
  • gma 空间绘图实战(1):绘制多个子图,连接并展示局部放大区域
  • Unity中C#使用协程控制Shader材质变化
  • WordPress禁止显示指定类别的文章
  • C#里面的泛型(T),泛型类,泛型方法,泛型接口等简单解释
  • C语言——指针(五)
  • 文章解读与仿真程序复现思路——中国电机工程学报EI\CSCD\北大核心《考虑气电联合需求响应的气电综合能源配网系统协调优化运行》
  • PostgreSQL 主键和唯一键的区别
  • 删除表格中的所有绘图
  • Linux卸载Nginx
  • Qt之QGraphicsView —— 笔记1:绘制简单图元(附完整源码)
  • SpringIoC原理
  • 如何对售后服务的全流程进行精细化的管理?
  • SAP UI5 walkthrough step2 Bootstrap
  • Gemini:定义下一代人工智能的里程碑
  • 一些系统日常运维命令和语句
  • 微信小程序uni.chooseImage()无效解决方案
  • Rust深入浅出:编程的深邃大海中的奇妙冒险
  • go-zero开发入门-API网关开发示例
  • TCP一对一通信
  • laravel DB::connection 报错 Database connection [{$name}] not configured
  • 快捷支付是什么?快捷支付好申请吗?
  • 如何在Spring Boot中集成RabbitMQ
  • 【Spring Boot 源码学习】ApplicationContextInitializer 详解