使用邻接矩阵构建无向带权图C语言
时间: 2023-06-28 13:04:48 浏览: 181
数据结构-c语言-带main函数-图7.2-图的存储结构-图的邻接矩阵的创建-无向图。
以下是使用邻接矩阵构建无向带权图的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_VERTICES 100 // 最大顶点数
typedef struct GraphType {
int n; // 顶点数
int weight[MAX_VERTICES][MAX_VERTICES]; // 邻接矩阵
} GraphType;
// 初始化图
void init(GraphType* g, int n) {
int i, j;
g->n = n;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
g->weight[i][j] = 0;
}
}
}
// 添加边
void add_edge(GraphType* g, int from, int to, int weight) {
g->weight[from][to] = weight;
g->weight[to][from] = weight;
}
int main() {
GraphType g;
int i, j, n, m, from, to, weight;
printf("请输入图的顶点数和边数:");
scanf("%d%d", &n, &m);
init(&g, n);
printf("请输入每条边的起点、终点和权值:\n");
for (i = 0; i < m; i++) {
scanf("%d%d%d", &from, &to, &weight);
add_edge(&g, from, to, weight);
}
printf("图的邻接矩阵表示如下:\n");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
printf("%d ", g.weight[i][j]);
}
printf("\n");
}
return 0;
}
```
这里使用了一个结构体 `GraphType` 来表示图,其中 `n` 表示顶点数,`weight` 是邻接矩阵。`init` 函数用于初始化图,将邻接矩阵中所有元素设置为0。`add_edge` 函数用于添加一条边,将起点和终点的邻接矩阵元素设置为权值。主函数中通过输入顶点数和边数,以及每条边的起点、终点和权值来构建无向带权图,并输出邻接矩阵。
阅读全文