菜鸟请教各位一个关于图的遍历的C语言程序

刚编写了一个程序,但是运行的时候错误太多,麻烦各位指教一下,不必全看只要把知道的错误发下就行了谢谢#defineINF20000#defineMAX20BooleanVi... 刚编写了一个程序,但是运行的时候错误太多,麻烦各位指教一下,不必全看只要把知道的错误发下就行了谢谢
#define INF 20000
#define MAX 20
Boolean Visited[MAX]
typedef struct ArcCell{
int adj;
int *info;
}ArcCell,AdiMatrix[MAX][MAX];
typedef struct{
char vexs[MAX][MAX];
AdjMatrix arcs;
int vexnum,arcnum;
char kind;
} MGraph,*Mgraph;
int LocateVex(Mgraph G,char v){
int i;
for(i=0;i<=G->vecnum;i++)
{if(G->vexs[i]==v)
return i;
break;
}
}
Mgraph CreatUDG(Mgraph G){
int IncInfo,w,i,j,k;
char v1,v2;
scanf("%d","%d","%d",&G->vexnum,&G->arvnum,&G->IncInfo);
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].adj=INF;
G->arcs[i][j].info=0;
}
for(k=0;k<G->arcnum;K++)
{scanf("%c","%c","%d",&v1,&v2,&w);
i=LocateVex(G,v1);
j=LocateVex(G,v2);
G->arcs[i][j].adj=w;
if(IncInfo)
scanf("%d",*G->arcs[i][j].info);
G->arcs[j][i]=G->arcs[i][j];
}
return G;
}
int FirstAdjVex(Mgraph G,int v){
int j;
for(j=0;j<G->vexnum;j++){
if(G->arcs[v][j].adj!=INF)
return j;
break;
}
}
int NextAdjVex(Mgraph G,int v,int w)
{int j;
for(j=w+1;j<G->vexnum;j++)
{if(G->arcs[v][j].adj!=INF)
return j;
break;
}
}
void DFS(Mgraph G,int v)
{int w;
Visited[v]=TRUE;
printf("%c-->",&G->vexnum[v]);
for(w=FirstAdjVex(G,v);w>=0;w=NextAdjVex(G,v,w))
{if(!Visited[w])
DFS(G,w); }
}
void DFSTraverse(Mgraph G)
{int v;
for(v=0;v<=G->vexnum;v++)
Visited[v]=FALSE;
for(v=0;v<G->vexnum;v++)
if(!Visited[v])
DFS(G,v);
}
void main()
{Mgraph G;
G=(Mgraph)malloc(sizeof(MGraph));
if(!G) exit(0);
G=CreatUDG(G);
DFSTraverse(G);
}
展开
 我来答
秋天来了仔陈
2009-05-18 · TA获得超过2145个赞
知道小有建树答主
回答量:843
采纳率:0%
帮助的人:741万
展开全部
Mgraph CreatUDG(Mgraph G),函数要有返回值或直接用void CreatUDG(Mgraph *G)。
Boolean Visited[MAX]中的Boolean好像没定义。
如果要实现广度优先遍历还得用到队列。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式