dfs遍历邻接矩阵的c语言实现
时间: 2024-11-01 18:02:43 浏览: 12
无向图深度遍历邻接矩阵报告.doc
在C语言中,使用深度优先搜索(DFS,Depth First Search)遍历邻接矩阵可以用来探索图中的节点。这里是一个基本的实现示例:
```c
#include <stdio.h>
#define V 4 // 图的顶点数
int graph[V][V] = {
{0, 1, 1, 0},
{1, 0, 1, 1},
{1, 1, 0, 1},
{0, 1, 1, 0} // 这只是一个例子,你可以替换为你实际的邻接矩阵
};
// 检查是否到达了目标节点
int visited[V];
void dfs(int v) {
printf("%d ", v); // 输出当前访问的节点
visited[v] = 1; // 标记该节点已访问
// 遍历邻接节点
for (int i = 0; i < V; i++) {
if (graph[v][i] == 1 && !visited[i]) {
dfs(i);
}
}
}
int main() {
int start_vertex = 0; // 从哪个节点开始,例如起点0
printf("Starting DFS from vertex %d:\n", start_vertex);
// 初始化所有节点未访问
for (int i = 0; i < V; i++) {
visited[i] = 0;
}
// 调用dfs函数进行遍历
dfs(start_vertex);
return 0;
}
```
在这个例子中,我们首先初始化了一个邻接矩阵表示图,然后定义了一个`dfs`函数用于递归地访问所有可达的节点。`visited`数组用于跟踪每个节点是否已被访问过。在`main`函数中,我们选择一个起始节点并调用`dfs`开始遍历。
阅读全文