在C语言中如何实现深度优先搜索(DFS)算法?请提供一个图的深度优先遍历示例。
时间: 2024-11-11 09:41:34 浏览: 43
深度优先搜索(DFS)是图算法中的一种重要遍历方法,适用于C语言实现。在《深度优先搜索(DFS)算法详解与C语言实现》一书中,我们可以找到关于DFS的核心概念、递归实现方法和C语言的具体实现步骤。以下是使用C语言实现DFS算法并进行图的深度优先遍历的详细步骤和示例代码:
参考资源链接:[深度优先搜索(DFS)算法详解与C语言实现](https://wenku.csdn.net/doc/1yc80bsiv9?spm=1055.2569.3001.10343)
1. 定义图的数据结构。通常使用邻接矩阵来表示图,并创建一个结构体`Graph`,它包含顶点数、边数以及一个二维数组表示连接矩阵。
```c
#define MAX_VERTICES 100
typedef struct {
int numVertices; // 顶点的数量
int adjMatrix[MAX_VERTICES][MAX_VERTICES]; // 邻接矩阵
} Graph;
```
2. 创建图。可以编写一个函数`create_example_graph`来初始化图结构,并设置顶点间的连接关系。
```c
void create_example_graph(Graph *g, int numVertices) {
// 初始化图的顶点数、边数和邻接矩阵
// 填充邻接矩阵来表示顶点间的连接
}
```
3. 实现DFS算法。可以通过递归函数来实现DFS遍历,该函数接受图的结构体指针、当前节点索引以及一个用于标记节点访问状态的数组。
```c
void DFS(Graph *g, int vertex, int visited[]) {
visited[vertex] = 1;
printf(
参考资源链接:[深度优先搜索(DFS)算法详解与C语言实现](https://wenku.csdn.net/doc/1yc80bsiv9?spm=1055.2569.3001.10343)
阅读全文