C语言图的深度遍历算法代码
时间: 2024-06-18 09:04:18 浏览: 123
C语言中的深度遍历算法代码可以使用递归实现,以下是一个简单的示例代码:
```c
#include <stdio.h>
#define MAX_VERTEX_NUM 100
typedef struct {
int vertex[MAX_VERTEX_NUM]; // 存储图中所有的顶点
int arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; // 存储图中每个顶点之间的关系
int vertex_num; // 顶点数量
int edge_num; // 边的数量
} Graph;
void dfs(Graph *g, int v, int visited[]) {
visited[v] = 1; // 标记当前节点为已访问
printf("%d ", g->vertex[v]); // 输出当前节点的值
for (int i = 0; i < g->vertex_num; i++) {
if (g->arcs[v][i] == 1 && !visited[i]) { // 如果当前节点与下一个节点有连通关系且下一个节点未被访问
dfs(g, i, visited); // 继续访问下一个节点
}
}
}
void depth_first_search(Graph *g, int start) {
int visited[MAX_VERTEX_NUM] = {0}; // 初始化所有节点未被访问
dfs(g, start, visited); // 从指定节点开始进行深度遍历
}
int main() {
Graph g = {
{1, 2, 3, 4, 5},
{
{0, 1, 1, 0, 1},
{1, 0, 1, 0, 0},
{1, 1, 0, 1, 0},
{0, 0, 1, 0, 1},
{1, 0, 0, 1, 0}
},
5,
7
};
depth_first_search(&g, 0); // 从顶点1开始深度遍历
return 0;
}
```
阅读全文