运用深度优先求所图的所有路径C语言
时间: 2023-11-26 20:05:41 浏览: 22
下面是使用深度优先搜索算法求图中所有路径的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_VERTEX_NUM 100 // 最大顶点数
// 邻接矩阵结构体
typedef struct {
int vertex[MAX_VERTEX_NUM]; // 顶点数组
int edge[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; // 邻接矩阵
int vertex_num; // 顶点数
int edge_num; // 边数
} MGraph;
// 深度优先搜索算法
void DFS(MGraph mg, int v, int visited[], int path[], int path_len) {
visited[v] = 1;
path[path_len++] = v;
if (path_len == mg.vertex_num) { // 找到了一条路径
printf("路径:");
for (int i = 0; i < path_len; i++) {
printf("%d ", path[i]);
}
printf("\n");
} else {
for (int i = 0; i < mg.vertex_num; i++) {
if (mg.edge[v][i] != 0 && !visited[i]) { // 如果v和i之间有边且i未被访问
DFS(mg, i, visited, path, path_len); // 继续搜索
}
}
}
visited[v] = 0; // 恢复环境
}
int main(void) {
// 构建邻接矩阵
MGraph mg;
mg.vertex_num = 5;
mg.edge_num = 7;
mg.vertex[0] = 0;
mg.vertex[1] = 1;
mg.vertex[2] = 2;
mg.vertex[3] = 3;
mg.vertex[4] = 4;
mg.edge[0][1] = 1;
mg.edge[0][2] = 1;
mg.edge[1][3] = 1;
mg.edge[1][4] = 1;
mg.edge[2][3] = 1;
mg.edge[2][4] = 1;
mg.edge[3][4] = 1;
// 深度优先搜索算法求所有路径
int visited[MAX_VERTEX_NUM] = {0}; // 是否被访问过
int path[MAX_VERTEX_NUM] = {0}; // 路径
int path_len = 0; // 路径长度
for (int i = 0; i < mg.vertex_num; i++) {
DFS(mg, i, visited, path, path_len);
}
return 0;
}
```
以上代码使用深度优先搜索算法求出了图中的所有路径,并输出到控制台上。如果需要对代码进行修改,可以根据需要进行调整。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)