int check(MGraph *G,VexType a)//定位 { int i; for(i=0;i<G->n;i++) { if(a==G->vex[i]) { return i; } } printf("未找到"); return -1; } void creatgrape(MGraph *G)//创造图 { int i,j,k,m,n; VexType o,p; printf("输入图的顶点与边数"); scanf("%d %d",&G->n,&G->e); printf("请输入相关顶点个数\n"); for(i=0; i<G->n; i++) { scanf("%s",&G->vex); getchar(); } for(i=0; i<G->n; i++) { for(j=0; j<G->n; j++) { G->arcs[i][j]=0; } } printf("请输入边的信息:\n"); for(k=0; k<G->e; k++) { scanf(" %c%c",&o,&p); getchar(); m=check(G,o); n=check(G,p); if(m==-1||n==-1) { printf("不存在"); } G->arcs[m][n]=1; G->arcs[n][m]=1; } }这段代码为什么找不到目标元素
时间: 2023-06-16 19:08:36 浏览: 60
图(数据结构C语言)
3星 · 编辑精心推荐
这段代码中的 `check` 函数用于定位顶点 `a` 在图中的位置,如果找到了则返回对应的位置索引,否则返回 `-1` 并输出错误信息。代码逻辑上看起来是没有问题的,但是可能出现找不到目标元素的情况,这通常是因为输入的顶点名称与实际创建的图中的顶点名称不一致导致的。
请检查一下输入的顶点名称与实际创建的图中的顶点名称是否一致,特别是输入时是否有多余的空格或换行符等无效字符。另外,建议在 `check` 函数中增加一条输出语句,以便更好地定位错误。例如:
```
int check(MGraph *G,VexType a) {
int i;
for(i = 0; i < G->n; i++) {
if(a == G->vex[i]) {
return i;
}
}
printf("未找到顶点 %c\n", a);
return -1;
}
```
阅读全文