邻接矩阵法的C语言代码
时间: 2023-10-18 13:17:37 浏览: 95
邻接矩阵法实现图C代码
邻接矩阵法是一种表示图形的常见方法,下面是使用 C 语言实现的邻接矩阵法的代码:
```c
#include <stdio.h>
#define MAX_VERTEX_NUM 100 // 最大顶点数
// 邻接矩阵存储结构
typedef struct {
int vertex[MAX_VERTEX_NUM]; // 顶点数组
int edge[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; // 边的数组
int vertex_num; // 顶点数
int edge_num; // 边数
} Graph;
// 创建图
void createGraph(Graph *g) {
int i, j, k, w;
printf("请输入顶点数和边数:\n");
scanf("%d %d", &g->vertex_num, &g->edge_num);
printf("请输入顶点:\n");
for (i = 0; i < g->vertex_num; i++) {
scanf("%d", &g->vertex[i]);
}
// 初始化边的数组
for (i = 0; i < g->vertex_num; i++) {
for (j = 0; j < g->vertex_num; j++) {
g->edge[i][j] = 0;
}
}
printf("请输入每条边的起点、终点和权值:\n");
for (k = 0; k < g->edge_num; k++) {
scanf("%d %d %d", &i, &j, &w);
g->edge[i][j] = w;
g->edge[j][i] = w; // 无向图
}
}
// 输出图
void printGraph(Graph g) {
int i, j;
printf("顶点有:\n");
for (i = 0; i < g.vertex_num; i++) {
printf("%d ", g.vertex[i]);
}
printf("\n");
printf("边有:\n");
for (i = 0; i < g.vertex_num; i++) {
for (j = i + 1; j < g.vertex_num; j++) {
if (g.edge[i][j] != 0) {
printf("(%d, %d) 权值为 %d\n", g.vertex[i], g.vertex[j], g.edge[i][j]);
}
}
}
}
int main() {
Graph g;
createGraph(&g);
printGraph(g);
return 0;
}
```
在该代码中,我们首先定义了一个 Graph 结构体,其中包含了顶点数组、边的数组、顶点数、边数等元素。接着,我们实现了创建图的函数 createGraph,该函数会根据用户输入的顶点数和边数来初始化顶点数组、边的数组以及相关的元素。最后,我们实现了一个打印图的函数 printGraph,该函数会输出图的所有顶点以及边。
阅读全文