void createudn(amgraph &G) { int w; char v1,v2; printf("请输入总定点数和总边数:\n"); scanf("%d %d",&G.vexnum,&G.arcnum); printf("请输入各点信息:\n"); 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]=maxint; } } for(i=0;i<G.arcnum;i++) { scanf("%c %c %d",&v1,&v2,&w); G.arcs[vexlocate(G,v1)][vexlocate(G,v2)]=w; G.arcs[vexlocate(G,v2)][vexlocate(G,v1)]=w; } }问题出在哪
时间: 2024-02-01 11:02:50 浏览: 131
实验一:建立一个有向图的邻接表,计算各顶点的度,输出拓补排序序列 实验二:在四个点之间选择一个点与另外三个点之间的距离最短
问题出在输入顶点信息时,应该在读取完数字后再读取字符,因为输入数字后会有一个换行符留在缓冲区中,会被误认为是输入的字符。可以在读取字符前加上一个空格来解决这个问题。修改后的代码如下:
```c
void createudn(amgraph &G) {
int w;
char v1,v2;
printf("请输入总定点数和总边数:\n");
scanf("%d %d",&G.vexnum,&G.arcnum);
printf("请输入各点信息:\n");
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]=maxint;
}
}
for(i=0;i<G.arcnum;i++) {
scanf(" %c %c %d",&v1,&v2,&w); // 加上空格
G.arcs[vexlocate(G,v1)][vexlocate(G,v2)]=w;
G.arcs[vexlocate(G,v2)][vexlocate(G,v1)]=w;
}
}
```
阅读全文