编写函数void degree2(Mgraph g):输出以邻接矩阵为存储结构的无向图各顶点的度。编写主函数验证该函数的正确性。
时间: 2024-03-24 18:38:34 浏览: 68
数据结构-c语言-带main函数-图7.2-图的存储结构-图的邻接矩阵的创建-无向图。
以下是完整的代码:
```cpp
#include <stdio.h>
#define MAXV 100 // 最大顶点数
#define INF 5000 // 两个顶点之间没有边相连的标记
typedef struct { // 无向图的邻接矩阵存储结构
int edges[MAXV][MAXV]; // 邻接矩阵
int n, e; // 顶点数和边数
}Mgraph;
void degree2(Mgraph g) {
int i, j, c;
for (i = 0; i < g.n; i++) {
c = 0;
for (j = 0; j < g.n; j++) {
if (g.edges[i][j] != INF && g.edges[i][j] != 0)
c++; // 统计该顶点连接的边的数量
}
printf("D(%d)=%d\n", i, c); // 输出该顶点的度
}
}
int main() {
Mgraph g;
int i, j;
printf("请输入顶点数和边数:\n");
scanf("%d%d", &g.n, &g.e);
for (i = 0; i < g.n; i++) {
for (j = 0; j < g.n; j++) {
g.edges[i][j] = INF; // 初始化邻接矩阵
}
}
printf("请输入边的信息:\n");
int v1, v2, w;
for (i = 0; i < g.e; i++) {
scanf("%d%d%d", &v1, &v2, &w);
g.edges[v1][v2] = w;
g.edges[v2][v1] = w; // 无向图,所以要对称存储
}
printf("输出各顶点的度:\n");
degree2(g);
return 0;
}
```
该程序首先读入顶点数和边数,然后根据输入的边的信息初始化邻接矩阵。接着调用degree2函数输出各顶点的度。
阅读全文