生成bfs的c语言代码
时间: 2023-09-14 07:14:21 浏览: 70
BFGS算法C源代码
4星 · 用户满意度95%
以下是一个简单的BFS算法的C语言代码:
```
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
int queue[MAX];
int front = -1;
int rear = -1;
int visited[MAX] = {0};
void bfs(int adj[][MAX], int n, int start) {
int i, v;
visited[start] = 1;
queue[++rear] = start;
while (front != rear) {
v = queue[++front];
printf("%d ", v);
for (i = 0; i < n; i++) {
if (adj[v][i] == 1 && visited[i] == 0) {
visited[i] = 1;
queue[++rear] = i;
}
}
}
}
int main() {
int n, i, j, start;
int adj[MAX][MAX];
printf("Enter the number of vertices: ");
scanf("%d", &n);
printf("Enter the adjacency matrix:\n");
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
scanf("%d", &adj[i][j]);
printf("Enter the starting vertex: ");
scanf("%d", &start);
printf("The BFS traversal is: ");
bfs(adj, n, start);
printf("\n");
return 0;
}
```
其中,`adj`是邻接矩阵,`n`是图的顶点数,`start`是起始顶点。在bfs函数中,我们使用队列来遍历图。我们首先将起始顶点加入队列中,然后从队列中取出一个顶点进行遍历,将其未访问过的邻居加入队列中。我们使用一个`visited`数组来记录每个顶点是否已经被访问过。在主函数中,我们先输入邻接矩阵和起始顶点,然后调用bfs函数进行遍历,并输出结果。
阅读全文