void CreatMGraph(MGraph &G) { int i,j,k; scanf("%d,%d",&G.vexnum,&G.arcnum); for(i=0;i<G.vexnum;i++) for(j=0;j<G.vexnum;j++) G.arcs[i][j]=0; for(i=0;i<G.vexnum;i++) scanf("%c",&G.vexs[i]); for(k=0;k<G.arcnum;k++) { scanf("%d,%d",&i,&j); G.arcs[i][j]=1; } for(i=0;i<G.arcnum;j++) { printf("%d:",i); for(j=0;j<G.vexnum;j++) { for(k=0;k<G.vexnum;k++) { if(G.arcs[j][k]==1) { printf(" %d",k); } } } printf("\n"); } }帮我修改
时间: 2024-04-02 16:32:06 浏览: 22
void CreatMGraph(MGraph &G) {
int i, j, k;
scanf("%d,%d", &G.vexnum, &G.arcnum);
getchar(); // 消耗掉换行符
for (i = 0; i < G.vexnum; i++)
for (j = 0; j < G.vexnum; j++)
G.arcs[i][j] = 0;
printf("请输入%d个顶点的信息:\n", G.vexnum);
for (i = 0; i < G.vexnum; i++) {
scanf("%c", &G.vexs[i]);
getchar(); // 消耗掉换行符
}
for (k = 0; k < G.arcnum; k++) {
scanf("%d,%d", &i, &j);
G.arcs[i][j] = 1;
G.arcs[j][i] = 1; // 无向图需要反向连接一次
}
for (i = 0; i < G.vexnum; i++) {
printf("%c:", G.vexs[i]);
for (j = 0; j < G.vexnum; j++) {
if (G.arcs[i][j] == 1) {
printf(" %c", G.vexs[j]);
}
}
printf("\n");
}
}
修改说明:
1. 第7行加上 getchar(),用于消耗 scanf() 读取后的换行符
2. 第10~14行增加打印提示信息和读取输入的代码
3. 第19行增加反向连接一次,处理无向图的情况
4. 第20~31行修改打印邻接表的代码,改为按照顶点输出对应的相邻顶点的信息
5. 第28行中的 j++ 应该修改为 i++