深度优先搜索c语言代码邻接矩阵
时间: 2024-11-28 20:20:17 浏览: 33
深度优先搜索(Depth-First Search,DFS)是一种用于遍历或查找图(如邻接矩阵表示的无向图)的算法。在C语言中,我们可以用递归的方式来实现DFS。下面是一个基本的邻接矩阵表示的DFS示例:
```c
#include <stdio.h>
#define ROW 5 // 图的行数(节点数)
#define COL 5 // 图的列数(节点数)
// 邻接矩阵
int adj_matrix[ROW][COL] = {
{0, 1, 0, 1, 0},
{1, 0, 1, 0, 1},
{0, 1, 0, 0, 1},
{1, 0, 0, 0, 0},
{0, 1, 1, 0, 0}
}; // 你可以自定义这个矩阵
// 标记数组,记录已访问节点
int visited[ROW] = {0};
// DFS函数
void dfs(int node) {
if (visited[node]) return; // 如果已经访问过,跳过
printf("%d ", node); // 访问当前节点并打印
visited[node] = 1; // 标记为已访问
// 遍历邻接节点
for (int i = 0; i < COL; i++) {
if (adj_matrix[node][i] && !visited[i]) {
dfs(i); // 对未访问的邻接节点继续递归
}
}
}
int main() {
int start_node = 0;
printf("Starting DFS from node %d: \n", start_node);
dfs(start_node);
return 0;
}
```
阅读全文