用c语言写一个用邻接矩阵存储的无向图的深度优先搜索遍历操作
时间: 2023-07-15 14:13:57 浏览: 54
以下是用邻接矩阵存储的无向图的深度优先搜索遍历操作的C语言代码:
```c
#include<stdio.h>
#define MAX 20
int graph[MAX][MAX];
int visited[MAX];
int n;
void dfs(int vertex) {
int i;
visited[vertex] = 1; // 标记顶点为已访问
printf("%d ", vertex); // 输出访问的顶点
for (i = 0; i < n; i++) {
if (graph[vertex][i] == 1 && visited[i] == 0) { // 如果存在边且未被访问
dfs(i); // 递归访问相邻顶点
}
}
}
int main() {
int i, j, start;
printf("Enter the number of vertices: ");
scanf("%d", &n);
printf("Enter the adjacency matrix:\n");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &graph[i][j]);
}
}
printf("Enter the starting vertex: ");
scanf("%d", &start);
printf("DFS traversal: ");
dfs(start);
printf("\n");
return 0;
}
```
其中,`graph`数组是邻接矩阵,`visited`数组用于标记顶点是否已经被访问过,`n`表示图中顶点的个数。`dfs`函数实现深度优先搜索遍历操作,从`vertex`顶点开始遍历。在遍历过程中,先将当前顶点标记为已访问,然后输出该顶点,接着递归访问相邻顶点。`main`函数中,先输入图的邻接矩阵,然后输入起始顶点,最后调用`dfs`函数进行深度优先遍历。