数据结构有关问题,愁了小弟我好几天了大家帮忙看看吧
数据结构问题,愁了我好几天了大家帮忙看看吧
编译没错,运行也有结果但结果不太对不是按要求运行的,大家帮着给看看吧,你们可以将边数和顶点数设为4运行试试,劳烦大家了
#include<stdio.h>
typedef char dingdian;
typedef int quanzhi;
#define zuidadds 100
#define zuidazhi 10000;
typedef struct{
dingdian D[zuidadds];
quanzhi Q[zuidadds][zuidadds];
int shijidds,bians;
}wang;
int dingdwz(wang W,dingdian v){
int i;
for(i=0;i<W.shijidds;i++)
if(W.D[i]==v)
return i;
return -1;
}
void creatwang(wang W){
int i,j,k;
printf("请输入实际顶点个数,以及边数\n");
scanf("%d,%d",&W.shijidds,&W.bians);
for(i=0;i<W.shijidds;i++){
scanf("%c",&W.D[i]);
getchar();
}
for(i=0;i<W.shijidds;i++){//初始化过程。
for(j=0;j<W.shijidds;j++){
W.Q[i][j]=zuidazhi;
}
}
for(k=0;k<W.bians;k++){
dingdian v1,v2;
quanzhi x;
printf("请输入第%d条边依附的顶点及权值\n",k+1);
scanf("%c,%c,%d",&v1,&v2,&x);
i=dingdwz(W,v1);
j=dingdwz(W,v2);
W.Q[i][j]=x;
W.Q[j][i]=W.Q[i][j];
printf("%d,%d\n",i,j);
}
}
void main(){
wang W;
creatwang(W);
printf("无向网创建完成。");
}
------解决方案--------------------
for (i = 0; i < W.shijidds; i++) {
scanf("%c", &W.D[i]);
getchar();
}
你这里知道加上getchar();
这里也应该加上:
scanf("%d,%d", &W.shijidds, &W.bians);
getchar();
还有这里
scanf("%c,%c,%d", &v1, &v2, &x);
getchar();
记住,回车字符'\n'也是一个字符,所以%c读取字符的时候,无意中就读了个'\n',而不是你想输入的字符。
编译没错,运行也有结果但结果不太对不是按要求运行的,大家帮着给看看吧,你们可以将边数和顶点数设为4运行试试,劳烦大家了
#include<stdio.h>
typedef char dingdian;
typedef int quanzhi;
#define zuidadds 100
#define zuidazhi 10000;
typedef struct{
dingdian D[zuidadds];
quanzhi Q[zuidadds][zuidadds];
int shijidds,bians;
}wang;
int dingdwz(wang W,dingdian v){
int i;
for(i=0;i<W.shijidds;i++)
if(W.D[i]==v)
return i;
return -1;
}
void creatwang(wang W){
int i,j,k;
printf("请输入实际顶点个数,以及边数\n");
scanf("%d,%d",&W.shijidds,&W.bians);
for(i=0;i<W.shijidds;i++){
scanf("%c",&W.D[i]);
getchar();
}
for(i=0;i<W.shijidds;i++){//初始化过程。
for(j=0;j<W.shijidds;j++){
W.Q[i][j]=zuidazhi;
}
}
for(k=0;k<W.bians;k++){
dingdian v1,v2;
quanzhi x;
printf("请输入第%d条边依附的顶点及权值\n",k+1);
scanf("%c,%c,%d",&v1,&v2,&x);
i=dingdwz(W,v1);
j=dingdwz(W,v2);
W.Q[i][j]=x;
W.Q[j][i]=W.Q[i][j];
printf("%d,%d\n",i,j);
}
}
void main(){
wang W;
creatwang(W);
printf("无向网创建完成。");
}
------解决方案--------------------
for (i = 0; i < W.shijidds; i++) {
scanf("%c", &W.D[i]);
getchar();
}
你这里知道加上getchar();
这里也应该加上:
scanf("%d,%d", &W.shijidds, &W.bians);
getchar();
还有这里
scanf("%c,%c,%d", &v1, &v2, &x);
getchar();
记住,回车字符'\n'也是一个字符,所以%c读取字符的时候,无意中就读了个'\n',而不是你想输入的字符。