图的广度优先遍历代码实现
时间: 2023-11-20 19:04:23 浏览: 40
以下是图的广度优先遍历代码实现:
```
// 定义一个队列,用于存储待访问的节点
queue<int> q;
// 定义一个数组,用于记录每个节点是否已经被访问过
bool visited[MAX_NODE_NUM] = {false};
// 以节点 start_node 为起点进行广度优先遍历
void bfs(int start_node) {
q.push(start_node); // 将起点加入队列
visited[start_node] = true; // 标记起点已被访问
while (!q.empty()) {
int cur_node = q.front(); // 取出队首节点
q.pop(); // 弹出队首节点
cout << cur_node << " "; // 对节点进行相应的操作,例如输出节点值
// 遍历当前节点的所有邻居节点
for (int i = 0; i < adj_list[cur_node].size(); i++) {
int neighbor_node = adj_list[cur_node][i]; // 取出邻居节点
if (!visited[neighbor_node]) { // 如果邻居节点还没有访问过
q.push(neighbor_node); // 将邻居节点加入队列
visited[neighbor_node] = true; // 标记邻居节点已被访问
}
}
}
}
```
注意:上述代码中的 `adj_list` 是一个邻接表,用于存储图的所有节点和它们的邻居节点。`MAX_NODE_NUM` 是一个常量,表示图中节点的最大个数。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)