C语言代码实现对连通图的深度优先搜索遍历
时间: 2024-04-29 10:24:56 浏览: 94
图的深度优先搜索遍历c代码实现
4星 · 用户满意度95%
很高兴为您解答问题。要实现对连通图的深度优先搜索遍历,可以采用递归实现方式,具体代码如下:
```c
#include <stdio.h>
#define MAX_VERTEX_NUM 100 // 图中顶点数的最大值
typedef struct {
int vertices[MAX_VERTEX_NUM]; // 顶点数组
int arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; // 邻接矩阵
int vexnum, arcnum; // 顶点数和边数
} MGraph;
int visited[MAX_VERTEX_NUM]; // 标记数组,记录每个节点是否已经被访问过
void DFS(MGraph G, int v) {
visited[v] = 1; // 标记节点v已经被访问过
printf("%d ", G.vertices[v]); // 输出节点v的值
for (int i = 0; i < G.vexnum; i++) { // 依次遍历节点v的所有邻居
if (G.arcs[v][i] == 1 && visited[i] == 0) { // 如果节点i是节点v的邻居,并且没有被访问过
DFS(G, i); // 递归访问节点i
}
}
}
int main() {
MGraph G;
// 省略初始化代码
for (int i = 0; i < G.vexnum; i++) {
visited[i] = 0; // 初始化标记数组
}
DFS(G, 0); // 从节点0开始深度优先遍历
return 0;
}
```
希望我的回答对您有帮助。如果您有其他问题,欢迎继续提问。
阅读全文