假设图采用邻接矩阵存储,设计一个从顶点,出发的深度优先遍历算法,请使用C语言
时间: 2024-03-21 15:39:23 浏览: 63
建立图的邻接矩阵或邻接表存储并在此基础上实现图的深度优先遍历和广度优先遍历.doc
5星 · 资源好评率100%
好的,以下是使用C语言实现从一个顶点出发的深度优先遍历算法,假设图采用邻接矩阵存储。
```c
#include <stdio.h>
#define MAXSIZE 100
int visited[MAXSIZE] = {0}; // 记录每个节点是否被访问过
void dfs(int graph[][MAXSIZE], int start, int n) {
visited[start] = 1; // 标记为已访问
printf("%d ", start);
for (int i = 0; i < n; i++) {
if (graph[start][i] == 1 && visited[i] == 0) {
dfs(graph, i, n); // 递归访问邻居节点
}
}
}
int main() {
int n; // 节点个数
scanf("%d", &n);
int graph[MAXSIZE][MAXSIZE]; // 邻接矩阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &graph[i][j]);
}
}
int start; // 起始节点
scanf("%d", &start);
dfs(graph, start, n);
return 0;
}
```
其中,`visited`数组用于记录每个节点是否被访问过,初始值为0。`dfs`函数用于递归访问邻居节点,`graph`是邻接矩阵,`start`是起始节点,`n`是节点个数。`main`函数中读入节点个数和邻接矩阵,以及起始节点,然后调用`dfs`函数进行深度优先遍历。
希望这个算法能够帮助到你,如果你还有其他问题,可以继续问我。
阅读全文