用c语言数组实现广度优先搜索
时间: 2023-11-24 11:51:32 浏览: 40
以下是使用C语言数组实现广度优先搜索的示例代码:
```c
#include <stdio.h>
#define MAX_QUEUE_SIZE 100
int visited[MAX_VERTEX_NUM]; // 记录每个顶点是否被访问过
int queue[MAX_QUEUE_SIZE]; // 队列
int head = 0, tail = 0; // 队头和队尾指针
// 广度优先搜索算法
void BFS(MGraph G, int v) {
printf("%c ", G.vexs[v]); // 输出顶点v的值
visited[v] = 1; // 标记顶点v已被访问
queue[tail++] = v; // 将顶点v入队
while (head != tail) { // 队列不为空时循环
int w = queue[head++]; // 取出队头元素w
for (int i = 0; i < G.vexnum; i++) {
if (G.arcs[w][i] == 1 && visited[i] == 0) { // 如果w和i之间有边且i未被访问
printf("%c ", G.vexs[i]); // 输出顶点i的值
visited[i] = 1; // 标记顶点i已被访问
queue[tail++] = i; // 将顶点i入队
}
}
}
}
```