C语言图的邻接矩阵递归的广度遍历代码
时间: 2024-10-02 13:01:04 浏览: 32
在C语言中,使用邻接矩阵表示图并进行广度优先搜索(BFS)的递归实现通常会涉及到队列的数据结构。下面是一个简单的递归BFS遍历邻接矩阵的例子,假设我们有一个二维数组`adjMatrix`代表图的邻接关系:
```c
#include <stdio.h>
#include <stdbool.h>
#define ROWS 5 // 图的行数
#define COLS 5 // 图的列数
// 邻接矩阵的值,0 表示无边,1 表示有边
int adjMatrix[ROWS][COLS] = {
// ... 填充您的邻接矩阵 ...
};
void bfs_recursive(int start, int visited[]) {
// 标记起始节点为已访问
visited[start] = true;
printf(" visiting %d\n", start); // 打印当前节点
// 遍历邻接节点
for (int i = 0; i < ROWS; i++) {
if (adjMatrix[start][i] == 1 && !visited[i]) { // 检查边是否存在且未访问过
bfs_recursive(i, visited); // 递归访问邻居
}
}
}
int main() {
bool visited[ROWS]; // 初始化所有节点为未访问
memset(visited, false, sizeof(visited));
int startNode = 0; // 起始节点位置
printf("Starting BFS from node %d:\n", startNode);
bfs_recursive(startNode, visited);
return 0;
}
```
阅读全文