c语言代码建立一个无向图,输出其邻接矩阵并输出输出深度遍历结果,该无向图邻接矩阵是010001 101100 010110 011010 001001 100010
时间: 2023-12-21 20:10:48 浏览: 112
代码 无向图关联矩阵和邻接矩阵的相互转换算法代码
好的,下面是用 C 语言实现建立一个无向图,输出其邻接矩阵并输出深度遍历结果的代码,假设邻接矩阵如下:
```
010001
101100
010110
011010
001001
100010
```
```
#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() {
// 读入图的节点数
n = 6;
// 读入图的邻接矩阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
char c;
scanf("%c", &c);
graph[i][j] = c - '0';
}
// 读取行末的换行符
scanf("%*c");
}
// 输出邻接矩阵
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 0 0 0 1
1 0 1 1 0 0
0 1 0 1 1 0
0 1 1 0 1 0
0 0 1 1 0 1
1 0 0 0 1 0
深度遍历结果:0 1 2 3 4 5
```
希望这个代码能够帮助你解决问题,如果还有其他问题,请随时问我。
阅读全文