数据结构问题,实在不知道哪错了,希望大家给瞧瞧,
看上去挺乱,但一些变量都是用的汉语拼音或拼音缩写,我在出问题的地方加了注释了希望大家可以给看看怎么改改就对了。
#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);
getchar();
for(i=0;i<W.shijidds;i++){
printf("输入顶点");
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);
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 i){
int w;
int visit[zuidadds];
for(i=0;i<zuidadds;i++){
visit[i]=0;
}
printf("W.D[i]");
visit[i]=1;
for(w=0;w<W.shijidds;w++){
if((W.Q[i][w]!=zuidazhi)&&(visit[w]==0)) DFS(W,w);//此句报错:{syntax error : missing ')' before ';' syntax error : missing ';' before ')'}报了这两个错
}
}
void main(){
wang W;
creatwang(W);
printf("********************************无向网创建完成************************************");
printf("深度优先遍历");
DFS(W,1);
}
[解决办法]
http://bbs.csdn.net/topics/390307606?page=1#post-393135331
[解决办法]
#include<stdio.h>
typedef char dingdian;
typedef int quanzhi;
#define zuidadds 100
#define zuidazhi 10000
typedef struct wang{
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();
for(i=0;i<W.shijidds;i++){
printf("输入顶点");
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);
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 i){
int w;
int visit[zuidadds];
for(i=0;i<zuidadds;i++){
visit[i]=0;
}
printf("W.D[i]");
visit[i]=1;
for(w=0;w<W.shijidds;w++){
if((W.Q[i][w]!=zuidazhi)&&(visit[w]==0)) DFS(W,w);//此句报错:{syntax error : missing ')' before ';'
//syntax error : missing ';' before ')'}报了这两个错
}
}
void main(){
wang W;
creatwang(W);
printf("********************************无向网创建完成************************************");
printf("深度优先遍历");
DFS(W,1);
}
[解决办法]
“给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门!
递归函数关注以下几个因素
·退出条件
·参数有哪些
·返回值是什么
·局部变量有哪些
·全局变量有哪些
·何时输出
·会不会导致堆栈溢出