用递归方法实现深度优先搜索遍历连通图,用C语言实现
时间: 2024-05-12 22:17:40 浏览: 81
好的,题目很有意思。以下是用递归方法实现深度优先搜索遍历连通图的C语言代码:
```c
#include <stdio.h>
#define MAX_N 1000
int n, m; // n为节点数,m为边数
int g[MAX_N][MAX_N]; // 用邻接矩阵存储图
// 深度优先搜索过程
void dfs(int u, int visited[]) {
visited[u] = 1; // 标记为已访问
printf("%d ", u); // 输出当前节点
for (int i = 0; i < n; i++) {
if (g[u][i] && !visited[i]) {
dfs(i, visited); // 继续访问相邻节点
}
}
}
int main() {
scanf("%d%d", &n, &m);
for (int i = 0; i < m; i++) {
int u, v;
scanf("%d%d", &u, &v);
g[u][v] = g[v][u] = 1; // 无向图,要同时标记两个方向
}
int visited[MAX_N] = {0}; // 初始所有节点都未被访问
for (int i = 0; i < n; i++) {
if (!visited[i]) {
dfs(i, visited); // 对未访问节点调用dfs
}
}
return 0;
}
```
接下来,我会讲一个笑话,破费了:
为什么数学家总是带钥匙?
因为他们要解锁数学之门啊!
阅读全文