void degree2(Mgraph g)//将此用于求图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]!=5000) c++; } printf("D(%d)=%d\n",i,c); } }
时间: 2024-03-24 11:38:33 浏览: 8
该函数是用于求图g的各顶点的度的函数,其中度的定义为一个顶点所连接的边的数量。
完整代码如下:
```cpp
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] != 5000)
c++; // 统计该顶点连接的边的数量
}
printf("D(%d)=%d\n", i, c); // 输出该顶点的度
}
}
```
该函数遍历每个顶点,统计每个顶点连接的边的数量,然后输出该顶点的度。其中,5000表示两个顶点之间没有边相连。
相关问题
编写函数void degree2(Mgraph g):输出以邻接矩阵为存储结构的无向图各顶点的度。编写主函数验证该函数的正确性。
以下是完整的代码:
```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函数输出各顶点的度。
6-2 求采用邻接矩阵作为存储结构的无向图各顶点的度 分数 6 作者 DS课程组 单位 临沂大学 本题要求实现一个函数,输出无向图每个顶点的数据元素的值,以及每个顶点度的值。 函数接口定义: void degree(MGraph G); G为采用邻接矩阵作为存储结构的无向图。 裁判测试程序样例: #include <stdio.h> #define MVNum 100 //最大顶点数 typedef struct{ char vexs[MVNum]; //存放顶点的一维数组 int arcs[MVNum][MVNum]; //邻接矩阵 int vexnum,arcnum; //图的当前顶点数和边数 }MGraph; void degree(MGraph G); void CreatMGraph(MGraph *G);/* 创建图 */ int main() { MGraph G; CreatMGraph(&G); degree(G); return 0; } void CreatMGraph(MGraph *G) { int i,j,k; scanf("%d%d",&G->vexnum,&G->arcnum); getchar(); for(i=0;i<G->vexnum;i++) scanf("%c",&G->vexs[i]); for(i=0;i<G->vexnum;i++) for(j=0;j<G->vexnum;j++) G->arcs[i][j]=0; for(k=0;k<G->arcnum;k++) { scanf("%d%d",&i,&j); G->arcs[i][j]=1; G->arcs[j][i]=1; } } /* 请在这里填写答案 */ 输入样例: 例如无向图 无向图.png 第一行给出图的顶点数n和边数e。第二行给出n个字符,表示n个顶点的数据元素的值。后面是e行,给出每一条边的两个顶点编号。 4 5 ABCD 0 1 0 2 1 2 1 3 2 3 输出样例: 输出n个顶点的元素值,顶点的数据类型为字符型。以及各顶点的度值 A:2 B:3 C:3 D:2
这道题要求实现一个函数,输出无向图每个顶点的数据元素的值,以及每个顶点度的值。我们可以通过遍历邻接矩阵来计算每个顶点的度,然后输出即可。
具体实现可以参考以下代码:
```c++
void degree(MGraph G) {
for (int i = 0; i < G.vexnum; i++) {
int degree = 0;
for (int j = 0; j < G.vexnum; j++) {
if (G.arcs[i][j] == 1) {
degree++;
}
}
printf("%c:%d ", G.vexs[i], degree);
}
}
```
首先,我们在外层循环中遍历每个顶点,对于每个顶点,我们定义一个变量 `degree` 存储其度数,然后在内层循环中遍历其它顶点,如果邻接矩阵中该顶点与其它顶点之间存在边,则将 `degree` 值加 1。最后,输出该顶点的数据元素的值和其度数即可。
完整代码如下: