首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一个关于图的遍历的有关问题,请。

2012-04-15 
请教大家一个关于图的遍历的问题,请高手指点。。。为啥我遍历图,会没结果呢?#includestdio.h#includeconio

请教大家一个关于图的遍历的问题,请高手指点。。。
为啥我遍历图,会没结果呢?
#include<stdio.h>
#include<conio.h>
typedef struct
{
char vexs[5];
int ar[5][5];
int vexnum,arcnum;
}Mgraph;
void createudn()
{
int i,j,k,v1,v2;
Mgraph G;
printf("请输入顶点数和弧数:\n");
scanf("%d %d",&G.vexnum,&G.arcnum);
for(i=0;i<G.vexnum;i++)
{
printf("\n请输入顶点向量:\n");
G.vexs[i]=getche();
}
for(i=0;i<G.vexnum;i++)
{
for(j=0;j<G.vexnum;j++)
G.ar[i][j]=0;
}
for(k=0;k<G.arcnum;k++)
{
printf("\n请输入一条边依附的顶点:\n");
scanf("%d %d",&v1,&v2);
G.ar[v1][v2]=1;
G.ar[v2][v1]=1;
}
for(i=0;i<G.vexnum;i++)
for(j=0;j<G.vexnum;j++)
{
printf("%d ",G.ar[i][j]);
if(j==4)printf("\n");
}
}
int visited[5]={0};
void traverse(int v)
{
Mgraph G;
int v1;
visited[v]=1;
printf("%c",G.vexs[v]);
for(v1=0;v1<G.vexnum;v1++)
{
if((G.ar[v][v1]!=0)&&(visited[v1]==0))
traverse(v1);
}
}
void main()
{
createudn();
traverse(0);
}

[解决办法]

探讨
首先 Mgraph G;要定义为全局的,二个函数才能都访问
traverse()函数里面 定义的Mgraph G;要去掉。

还是就是楼主的遍历算法不对。。。

热点排行