c语言代码建立一个无向图,输出其邻接矩阵并输出输出深度遍历结果,无向图邻接矩阵如下
时间: 2023-12-21 10:10:48 浏览: 92
无向图的建立和邻接矩阵的输出
5星 · 资源好评率100%
好的,下面是用 C 语言实现建立一个无向图,输出其邻接矩阵并输出深度遍历结果的代码,假设邻接矩阵如下:
```
0 1 1 1 0
1 0 1 0 1
1 1 0 1 0
1 0 1 0 1
0 1 0 1 0
```
```
#include <stdio.h>
#include <stdbool.h>
#define MAX_VERTICES 100
int n; // 图的节点数
int graph[MAX_VERTICES][MAX_VERTICES]; // 存储图的邻接矩阵
bool visited[MAX_VERTICES]; // 标记节点是否被访问过
// 深度优先搜索
void dfs(int v) {
printf("%d ", v);
visited[v] = true;
for (int i = 0; i < n; i++) {
if (graph[v][i] && !visited[i]) {
dfs(i);
}
}
}
int main() {
// 读入图的节点数
scanf("%d", &n);
// 读入图的邻接矩阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &graph[i][j]);
}
}
// 输出邻接矩阵
printf("邻接矩阵:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
printf("%d ", graph[i][j]);
}
printf("\n");
}
// 深度遍历
printf("深度遍历结果:");
for (int i = 0; i < n; i++) {
visited[i] = false;
}
for (int i = 0; i < n; i++) {
if (!visited[i]) {
dfs(i);
}
}
printf("\n");
return 0;
}
```
输出结果如下:
```
邻接矩阵:
0 1 1 1 0
1 0 1 0 1
1 1 0 1 0
1 0 1 0 1
0 1 0 1 0
深度遍历结果:0 1 2 3 4
```
希望这个代码能够帮助你解决问题,如果还有其他问题,请随时问我。
阅读全文