以上代码可以用图的基本操作实现吗?
时间: 2023-09-14 21:15:48 浏览: 39
是的,可以使用图的基本操作实现深度优先遍历,以下是使用图的基本操作实现深度优先遍历的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define MAXN 100
typedef struct {
int adj_matrix[MAXN][MAXN];
int n;
} Graph;
bool visited[MAXN];
int order[MAXN];
int idx = 0;
void dfs(Graph *g, int v)
{
visited[v] = true;
order[idx++] = v;
for (int i = 0; i < g->n; i++) {
if (g->adj_matrix[v][i] == 1 && !visited[i]) {
dfs(g, i);
}
}
}
int main()
{
Graph *g = (Graph *) malloc(sizeof(Graph));
scanf("%d", &g->n);
for (int i = 0; i < g->n; i++) {
for (int j = 0; j < g->n; j++) {
scanf("%d", &g->adj_matrix[i][j]);
}
}
for (int i = 0; i < g->n; i++) {
visited[i] = false;
}
for (int i = 0; i < g->n; i++) {
if (!visited[i]) {
dfs(g, i);
}
}
for (int i = 0; i < g->n; i++) {
printf("%d ", order[i]);
}
printf("\n");
free(g);
return 0;
}
```
其中,结构体 `Graph` 包含邻接矩阵和顶点数量,函数 `dfs` 实现递归遍历。输入样例和输出样例与前面的代码相同。
相关推荐
![txt](https://img-home.csdnimg.cn/images/20210720083642.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)