用C语言编写一个基于邻接矩阵存储的无向图的深度优先遍历的程序
时间: 2024-02-21 22:57:27 浏览: 70
好的,以下是基于邻接矩阵存储的无向图的深度优先遍历的C语言程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define MAX_VERTICES 100 // 最大顶点数
int visited[MAX_VERTICES] = {0}; // 记录顶点是否已访问,初始为0
void DFS(int graph[][MAX_VERTICES], int vertex, int size)
{
visited[vertex] = 1; // 标记该顶点已被访问
printf("%d ", vertex); // 输出该顶点
for (int i = 0; i < size; i++) {
if (graph[vertex][i] == 1 && visited[i] == 0) { // 未被访问过的相邻顶点
DFS(graph, i, size); // 递归访问相邻顶点
}
}
}
int main()
{
int size; // 顶点数
int graph[MAX_VERTICES][MAX_VERTICES]; // 邻接矩阵存储图
printf("请输入顶点数:");
scanf("%d", &size);
printf("请输入邻接矩阵:\n");
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
scanf("%d", &graph[i][j]);
}
}
printf("深度优先遍历结果为:\n");
for (int i = 0; i < size; i++) {
if (visited[i] == 0) { // 未被访问过的顶点
DFS(graph, i, size); // 从该顶点开始深度优先遍历
}
}
printf("\n");
return 0;
}
```
该程序中,DFS函数实现了深度优先遍历,visited数组记录了每个顶点是否已被访问过。在主函数中,先读入邻接矩阵表示的无向图,然后对每个未被访问过的顶点进行深度优先遍历。
阅读全文