BFS用C++简单易懂的模板
时间: 2023-06-01 21:02:06 浏览: 123
C++ 模板
以下是BFS在C语言中的简单易懂的模板:
```
#include <stdio.h>
#include <stdbool.h>
#define MAX_SIZE 100 // 队列最大长度
int queue[MAX_SIZE]; // 存储队列
int front = 0; // 队首指针
int rear = 0; // 队尾指针
bool visited[MAX_SIZE]; // 标记节点是否被访问
// 定义图结构
int graph[MAX_SIZE][MAX_SIZE];
int n; // 图中节点的个数
// BFS函数
void bfs(int start) {
// 初始化队列
front = rear = 0;
queue[rear++] = start;
visited[start] = true;
// 遍历队列
while (front != rear) {
int cur = queue[front++];
// 处理当前节点,例如输出该节点
printf("%d ", cur);
// 遍历该节点的所有邻居
for (int i = 0; i < n; i++) {
if (graph[cur][i] && !visited[i]) {
queue[rear++] = i;
visited[i] = true;
}
}
}
}
int main() {
// 初始化图结构和节点个数
n = 5;
graph[0][1] = graph[1][0] = 1;
graph[0][2] = graph[2][0] = 1;
graph[1][3] = graph[3][1] = 1;
graph[2][4] = graph[4][2] = 1;
// 从节点0开始进行BFS遍历
bfs(0);
return 0;
}
```
该模板中,我们首先定义了一个队列和一个visited数组,用于存储已经访问过的节点以及待遍历的节点。然后我们定义了一个图结构,其中包括节点个数和边的信息。接下来是BFS函数,我们在该函数中使用队列进行遍历,并在每次遍历时输出该节点,并将其未访问过的邻居加入队列中。最后我们在主函数中调用BFS函数,从起始节点开始进行遍历。
阅读全文