Day10 图的广度优先遍历

Posted cc的心理活动

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Day10 图的广度优先遍历相关的知识,希望对你有一定的参考价值。

图的广度优先遍历具有广泛的应用,在bfs,即广度优先遍历算法中,用户更多的关注当前节点的相邻节点,例如,在如下的图中

若从A节点开始遍历,则遍历顺序是A->B->C->F->D->E

即每次优先遍历与根节点相邻的节点,先来先遍历,因此需要用到队列。

在c++ stl中,我们可以使用queue数据结构来表示队列,需要用到头文件:

  
    
    
  
#include<queue>
以下是几个最基础的队列操作函数
  
    
    
  
queue<int> Q;//定义一个队列Q Q.push(0);//入队 Q.pop();//将队头元素删除 int p=Q.front();//将对头元素赋值给p bool flag=Q.empty();
bfs算法过程:
  1. 将起点入队
  2. 判定队列是否为空循环非空条件,出队对头元素进行遍历,同时对未遍历过的首条边和其他邻边的弧头入队

代码:

void BFS(Graph G) { queue<int> Q; Q.push(1); for (int i = 1; i <= G.vexNum; i++) visited[i] = false; int i, j,t; while (!Q.empty()) { t = Q.front(); Q.pop(); visited[t] = true; cout << G.vexlist[t].name << ' '; edgeNode *w; for (w = G.vexlist[t].firstedge; w != NULL; w = w->nextEdge) { if (visited[w->head] == false) { Q.push(w->head); } }
}}


以上是关于Day10 图的广度优先遍历的主要内容,如果未能解决你的问题,请参考以下文章

图的深度优先遍历DFS和广度优先遍历BFS(邻接矩阵存储)超详细完整代码进阶版

图的深度/广度优先遍历C语言程序

数据结构C语言版 图的广度优先遍历和深度优先遍历 急急急 会查重

C语言实现图的广度优先搜索遍历算法

Day10 图的深度优先遍历

什么是图的深度优先遍历?什么是图的广度优先遍历?