图的深度优先遍历C语言
时间: 2023-12-25 20:29:28 浏览: 105
在C语言中实现图的深度优先遍历可以使用邻接矩阵来表示图的结构,并使用递归的方式进行遍历。下面是一个示例代码:
```c
#include <stdio.h>
#define MAX_SIZE 100
int visited[MAX_SIZE]; // 记录节点是否被访问过
// 邻接矩阵表示的图
int graph[MAX_SIZE][MAX_SIZE] = {
{0, 1, 1, 0, 0},
{1, 0, 0, 1, 1},
{1, 0, 0, 0, 1},
{0, 1, 0, 0, 0},
{0, 1, 1, 0, 0}
};
// 深度优先遍历函数
void dfs(int vertex) {
printf("%d ", vertex); // 输出当前节点
visited[vertex] = 1; // 标记当前节点为已访问
// 遍历当前节点的邻接节点
for (int i = 0; i < MAX_SIZE; i++) {
if (graph[vertex][i] == 1 && visited[i] == 0) {
dfs(i); // 递归遍历邻接节点
}
}
}
int main() {
// 初始化visited数组
for (int i = 0; i < MAX_SIZE; i++) {
visited[i] = 0;
}
printf("深度优先遍历结果:");
dfs(0); // 从节点0开始深度优先遍历
return 0;
}
```
运行以上代码,将输出图的深度优先遍历结果:0 1 3 4 2。
阅读全文