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

BFS算法C++实现(邻接表存储)

背景:

王道数据结构使用伪代码讲解图,这样虽然方便理解,但是没有具体实现,在网上找bfs算法C++实现模版也没找到,暂时写一个充当模版吧

BFS算法C++模版:

#include<iostream>
#include<vector>
#include<queue>
using namespace std;
// 定义BFS函数,使用邻接表存储
int bfs(vector<vector<int>> &graph, int start, vector<bool> &visited){ // 传入参数:图,开始点// 把点传入队列,queue<int> q;q.push(start); // 初始化访问数组,并标记访问int n = graph.size();visited[start] = true;// 判断:队列非空while(!q.empty()){// 取出头结点,int v = q.front();q.pop();cout << v << " ";cout << "\n" ;// 访问邻接点,加入队列for(int tem:graph[v]){cout <<"Tem:" << tem ;if(!visited[tem]){q.push(tem);visited[tem]= true;}}}return 0;
}// BFS遍历非连通图
void bfsTraverse(vector<vector<int>> &graph){// 计算顶点数int n = graph.size();vector<bool> visited(n, false);// 遍历所有顶点,对每个顶点执行一次bfsfor(int i=0;i<n;i++){if(!visited[i]){bfs(graph,i, visited);}}}// 调用BFS函数
int main(){// 定义邻接表vector<vector<int>> graph={// 分量1(顶点0-3):三角形环 + 分支(0-1-2-0 环,3仅连1/2,与0不直接连通){1, 2},       // 0: 连1、2(环的两边){0, 2, 3},    // 1: 连0、2(环) + 3(分支,打破全连通){0, 1, 3},    // 2: 连0、1(环) + 3(分支,与1形成对3的双向连接){1, 2},       // 3: 仅连1、2(与0无直接边,分量1内形成“环+分支”子结构)// 分量2(顶点4-6):链式环 + 自环(4→5→6→4 环,5带自环,6连4/5){5, 6},       // 4: 连5(链起点) + 6(反向连,形成环){4, 6, 5},    // 5: 连4(链) + 6(环) + 自环(5→5,特殊边){4, 5},       // 6: 连4、5(闭合环,无额外边,与分量1结构差异)// 分量3(顶点7-9):星型+环(7为中心,8-9形成环,7连8/9,9连8,8不连7以外的节点){8, 9},       // 7: 连8、9(中心节点,无自环){9},          // 8: 仅连9(与9形成环,不连7以外节点,打破星型全连接){7, 8}        // 9: 连7(中心) + 8(环,与8双向)};// 调用BFS函数cout << "BFS遍历:";bfsTraverse(graph);cout << endl;return 0;
}

http://www.dtcms.com/a/343534.html

相关文章:

  • 最爱--中岛美雪
  • 8 月 20 日科技新动态:多领域创新成果涌现
  • 【typenum】 19 类型相同检查(type_operators.rs片段)
  • Esp32基础(⑩超声波测距模块)
  • Pycharm SSH连接
  • Wireshark数据包波形绘制异常
  • [RestGPT] docs | RestBench评估 | 配置与环境
  • 【51单片机】【protues仿真】基于51单片机16键电子琴系统
  • 【GPT入门】第51课 Conda环境迁移教程:将xxzh环境从默认路径迁移到指定目录
  • OpenAI 开源模型 gpt-oss 是在合成数据上训练的吗?一些合理推测
  • Mysql事务特性
  • python实现根据接口返回数据生成报告和图表
  • (第二十期下)超链接的更多分类
  • 医疗元宇宙:破解医疗困局与数字化变革路径
  • gRPC 服务发现选型对比
  • 基于STM32单片机的二维码识别物联网OneNet云仓库系统
  • 最小生成树的普利姆算法和克鲁斯卡尔算法
  • ABP vNext 速率限制在多租户场景落地
  • Leetcode 深度优先搜索 (13)
  • Leetcode 深度优先搜索 (12)
  • 20250821 圆方树总结
  • 通信基础理论
  • C语言基础习题——01
  • plantsimulation小知识25.08.21 对话框的使用方法
  • 深圳大学-计算机信息管理课程实验 C++ 自考模拟题
  • 【LeetCode】18. 四数之和
  • C语言:字符函数与字符串函数(2)
  • ORA-16331: container is not open ORA-06512: at “SYS.DBMS_LOGMNR“
  • Hexo 博客图片托管:告别本地存储,用 PicGo + GitHub 打造高速稳定图床
  • ArcMap 数据框裁剪(Data Frame Clip)操作教程