c++中广度优先搜索代码示例
时间: 2023-12-25 13:01:23 浏览: 26
以下是一个简单的 C 语言中广度优先搜索的代码示例:
```c
#include <stdio.h>
#define MAX 100
int graph[MAX][MAX];
int visited[MAX];
int queue[MAX];
int front = -1, rear = -1;
void bfs(int start, int n) {
visited[start] = 1;
queue[++rear] = start;
while (front != rear) {
int current = queue[++front];
printf("%d ", current);
for (int i = 0; i < n; i++) {
if (graph[current][i] == 1 && visited[i] == 0) {
queue[++rear] = i;
visited[i] = 1;
}
}
}
}
int main() {
int n, start;
printf("输入顶点数:");
scanf("%d", &n);
printf("输入图的邻接矩阵:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &graph[i][j]);
}
}
printf("输入起始顶点:");
scanf("%d", &start);
printf("广度优先遍历结果为:");
bfs(start, n);
return 0;
}
```
以上代码使用邻接矩阵表示图,通过广度优先搜索算法遍历图中的顶点,并输出遍历结果。在 `main` 函数中,用户可以输入图的顶点数、邻接矩阵以及起始顶点,然后调用 `bfs` 函数进行广度优先搜索。`bfs` 函数使用队列来存储待访问的顶点,并在遍历过程中更新 `visited` 数组记录已访问的顶点。最终输出广度优先遍历的结果。