bfs基于c语言
时间: 2023-07-13 14:26:03 浏览: 60
BFS(广度优先搜索)算法可以基于C语言来实现。以下是一个简单的示例代码:
```
#include <stdio.h>
#define MAX_SIZE 100
int graph[MAX_SIZE][MAX_SIZE]; // 图的邻接矩阵
int visited[MAX_SIZE]; // 记录节点是否已经被访问过的数组
int queue[MAX_SIZE]; // 队列,用于存储待访问的节点
int front = 0, rear = 0; // 队列的头尾指针
void bfs(int start, int n) {
visited[start] = 1; // 标记起点已被访问
queue[rear++] = start; // 将起点加入队列
while (front < rear) { // 队列非空
int cur = queue[front++]; // 取出队首节点
printf("%d ", cur); // 访问该节点
for (int i = 0; i < n; i++) {
if (graph[cur][i] && !visited[i]) { // 如果该节点的邻居节点未被访问
visited[i] = 1; // 标记为已访问
queue[rear++] = i; // 加入队列
}
}
}
}
int main() {
int n, m;
scanf("%d%d", &n, &m); // 输入节点数和边数
for (int i = 0; i < m; i++) {
int u, v;
scanf("%d%d", &u, &v); // 输入边的起点和终点
graph[u][v] = graph[v][u] = 1; // 在邻接矩阵中记录边
}
bfs(0, n); // 从节点0开始进行BFS
return 0;
}
```
该代码实现了一个基本的BFS算法,输入为节点数和边数,然后输入每条边的起点和终点,最后从节点0开始进行BFS并输出遍历结果。