#include <stdio.h> #define MVNum 100 //最大顶点数 typedef struct{ char vexs[MVNum]; //存放顶点的一维数组 int arcs[MVNum][MVNum]; //邻接矩阵 int vexnum,arcnum; //图的当前顶点数和边数 }MGraph; void CreatMGraph(MGraph &G);/* 创建图 */ void printGraph(MGraph G);/*输出图 */ int locate(MGraph G,char v);//返回顶点v的下标 int main() { MGraph G; CreatMGraph(G);//创建图G printGraph(G);//打印该图 return 0; } void printGraph(MGraph G)//打印图 { int i,j; for(i=0;i<G.vexnum;i++) { printf("%c:",G.vexs[i]); for(j=0;j<G.vexnum;j++) if (G.arcs[i][j]) printf(" %c",G.vexs[j]); printf("\n"); } } /* 请在这里填写答案 */补全函数
时间: 2024-03-03 21:47:58 浏览: 66
题目要求补全一个函数,但并未说明是哪个函数,我猜测是指创建图的函数CreatMGraph,因此补全该函数如下:
```c
void CreatMGraph(MGraph &G) {
int i, j, k;
char v1, v2;
printf("请输入顶点数和边数:\n");
scanf("%d%d", &G.vexnum, &G.arcnum);
getchar(); // 读入回车符
printf("请输入顶点信息:\n");
for (i = 0; i < G.vexnum; i++) {
scanf("%c", &G.vexs[i]);
G.arcs[i][i] = 0; // 初始化邻接矩阵对角线为0
}
getchar(); // 读入回车符
printf("请输入每条边所连接的两个顶点:\n");
for (k = 0; k < G.arcnum; k++) {
scanf("%c%c", &v1, &v2);
getchar(); // 读入回车符
i = locate(G, v1);
j = locate(G, v2);
G.arcs[i][j] = G.arcs[j][i] = 1; // 无向图邻接矩阵对称
}
}
int locate(MGraph G, char v) {
int i;
for (i = 0; i < G.vexnum; i++) {
if (G.vexs[i] == v) {
return i;
}
}
return -1; // 未找到返回-1
}
```
阅读全文