哪位前辈可以帮我解决一下这个问题呀,实在找不出原因了
编译没问题,创建无向网的运行也可以完成,但到了深度遍历那部分为什么运行不出来结果呢希望大家给看看。劳烦大家运行试试谢谢了#include<stdio.h>
typedef char dingdian;
typedef int quanzhi;
#define zuidadds 100
#define zuidazhi 10000//用指令定义常量不加分号,若加了分号在下面凡是用到此常量是会报错:syntax error : missing ')' before ';', syntax error : missing ';' before ')'
int visit[zuidadds];
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);
getchar();//三个getchar()都不可缺。
for(i=0;i<W.shijidds;i++){
printf("输入顶点");
scanf("%c",&W.D[i]);
getchar();//不加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);
getchar();//不加getchar()结束符回车将被读进去,引发错误
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 DFS(wang W,int v){
int k;
printf("%c",W.D[v]);运行结果根本就没这部分的输出怎么回事呀
visit[v]=1;
for(k=0;k<W.shijidds;k++){
if((W.Q[v][k]!=zuidazhi)&&visit[k]==0) DFS(W,k);
}
}
void DFSsearch(wang W){
int i;
for(i=0;i<W.shijidds;i++)
visit[i]=0;
for(i=0;i<W.shijidds;i++)
if(visit[i]=0)
DFS(W,i);
}
void main(){
wang W;
creatwang(W);
printf("****************************无向网创建完成****************************");
printf("\n深度优先遍历结果为:\n");
DFSsearch(W);
}