① 输入边和顶点数量即 vexnum和arcnum ② 输入顶点内容即
Vertex ③ 初始化边表内容 即 Edge 将内容全部设置成无穷大(或者
其他也可以) ④ 输入边的权值和对应的两个顶点(这里输入的是字
符不是数组坐标) ⑤ 将输入的值转换成坐标值(Locate)
结果如下图所示,这里第7条边打错了,失误了,但没啥影响,最终使用后面的深度优先遍历 打印出了
所载入的值,对应的图结构和表就是上面的图。
//创建无向图表
Gragh* CreatGragh(Gragh *G) {
printf("请输入顶点数和边数");
scanf("%d %d",&G->vernum,&G->arcnum); //输入总顶点和边的数量
getchar(); //吸收回车
printf("请输入数组内容:>");
scanf("%s", G->Vertex); //输入顶点/数组
for (int j = 0;j < G->vernum;j++) { //初始化列表即二维数组
for (int k = 0;k< G->vernum;k++) {
G->Edge[j][k] = 50;
}
}
for (int q = 0;q < G->arcnum;q++) {
char v1, v2; //该边对应的x,y坐标,即顶点
int w; //该边的权值
int x, y;
printf("请输入第%d条边的权值及对应的顶点:>", q + 1);
scanf("%d %c %c", &w, &v1, &v2);
x = Locate(G, v1);
y = Locate(G, v2); //获取表中对应的位置
G->Edge[x][y] = w;
G->Edge[y][x] = w; //数值按照对角线对称
}
return G;
}