用C语言写一个dfs算法
时间: 2023-05-14 20:04:49 浏览: 60
好的,以下是一个简单的C语言DFS算法的示例代码:
```
#include <stdio.h>
#define MAX_N 100
int n; // 图中节点的数量
int graph[MAX_N][MAX_N]; // 图的邻接矩阵
int visited[MAX_N]; // 记录节点是否被访问过
void dfs(int node) {
visited[node] = 1; // 标记节点已被访问
printf("%d ", node); // 输出节点编号
// 遍历与当前节点相邻的节点
for (int i = 0; i < n; i++) {
if (graph[node][i] && !visited[i]) {
dfs(i);
}
}
}
int main() {
// 读入图的信息
scanf("%d", &n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &graph[i][j]);
}
}
// 从节点0开始遍历
dfs(0);
return 0;
}
```
希望这个示例代码能够帮助你理解DFS算法的实现。
相关问题
使用C语言写一个深度算法代码
以下是使用C语言写的深度优先搜索算法的示例代码:
```c
#include <stdio.h>
#include <stdbool.h>
#define MAX_VERTICES 100
bool visited[MAX_VERTICES];
int adj_matrix[MAX_VERTICES][MAX_VERTICES];
int num_vertices;
void dfs(int v) {
visited[v] = true;
printf("%d ", v);
for (int i = 0; i < num_vertices; i++) {
if (adj_matrix[v][i] == 1 && !visited[i]) {
dfs(i);
}
}
}
int main() {
printf("Enter the number of vertices: ");
scanf("%d", &num_vertices);
printf("Enter the adjacency matrix:\n");
for (int i = 0; i < num_vertices; i++) {
for (int j = 0; j < num_vertices; j++) {
scanf("%d", &adj_matrix[i][j]);
}
}
printf("DFS traversal: ");
for (int i = 0; i < num_vertices; i++) {
visited[i] = false;
}
for (int i = 0; i < num_vertices; i++) {
if (!visited[i]) {
dfs(i);
}
}
printf("\n");
return 0;
}
```
该代码使用了邻接矩阵表示图,并使用了递归来实现深度优先搜索。在搜索过程中,使用了一个visited数组来记录每个节点是否被访问过。通过输入邻接矩阵和起始节点,可以输出从起始节点开始的深度优先遍历结果。
用C++写一个DFS算法
深度优先搜索(DFS)算法是一种图形搜索算法,它可以让您遍历图中的所有节点。它从图中的某个节点开始,并沿着图中的路径搜索,直到搜索到所有的节点为止。使用C语言来实现DFS算法,首先要定义一个图的数据结构,然后定义一个DFS函数,该函数从指定的节点开始,并遍历所有的节点。实现DFS算法的具体步骤如下:
1. 初始化访问标记数组
2. 从指定的节点开始,将其访问标记设置为“已访问”
3. 对该节点的所有邻接节点进行检查,如果没有被访问过,则调用DFS函数,以该节点为起点继续搜索
4. 当没有可以访问的节点时,返回上一层节点,继续搜索
5. 当所有节点都被访问过时,算法结束