c语言代码建立一个无向图,输出其邻接矩阵并输出输出深度遍历结果,并告诉我如何输入 ,该无向图邻接矩阵是010001 101100 010110 011010 001001 100010
时间: 2024-02-16 09:01:49 浏览: 68
C语言 输入无向图连通图的顶点数、顶点信息、边数、顶点对序列及遍历的起始点序号,输出深度优先遍历序列。
5星 · 资源好评率100%
以下是使用 C 语言建立无向图并输出邻接矩阵及深度遍历结果的示例代码:
```c
#include <stdio.h>
#include <stdbool.h>
#define MAX_VERTICES 6
int adjacency_matrix[MAX_VERTICES][MAX_VERTICES];
bool visited[MAX_VERTICES];
void add_edge(int u, int v) {
adjacency_matrix[u][v] = 1;
adjacency_matrix[v][u] = 1;
}
void depth_first_traversal(int vertex) {
visited[vertex] = true;
printf("%d ", vertex);
for (int i = 0; i < MAX_VERTICES; i++) {
if (adjacency_matrix[vertex][i] == 1 && !visited[i]) {
depth_first_traversal(i);
}
}
}
int main() {
// 输入邻接矩阵
int matrix[MAX_VERTICES][MAX_VERTICES] = {
{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, 0, 0, 1},
{1, 0, 0, 0, 1, 0}
};
// 将邻接矩阵存储到 adjacency_matrix 中
for (int i = 0; i < MAX_VERTICES; i++) {
for (int j = 0; j < MAX_VERTICES; j++) {
adjacency_matrix[i][j] = matrix[i][j];
}
}
// 输出邻接矩阵
printf("邻接矩阵:\n");
for (int i = 0; i < MAX_VERTICES; i++) {
for (int j = 0; j < MAX_VERTICES; j++) {
printf("%d", adjacency_matrix[i][j]);
}
printf("\n");
}
// 深度遍历
printf("深度遍历结果:\n");
for (int i = 0; i < MAX_VERTICES; i++) {
visited[i] = false;
}
for (int i = 0; i < MAX_VERTICES; i++) {
if (!visited[i]) {
depth_first_traversal(i);
}
}
return 0;
}
```
输入方法:直接将邻接矩阵输入到代码中的 `matrix` 数组中即可。例如,对于给定的邻接矩阵 `010001 101100 010110 011010 001001 100010`,可以将其转换为以下二维数组形式:
```c
int matrix[MAX_VERTICES][MAX_VERTICES] = {
{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, 0, 0, 1},
{1, 0, 0, 0, 1, 0}
};
```
注意:该邻接矩阵中的每个数字都是字符型,需要将其转换为整型。
阅读全文