关于数据结构中用邻接矩阵法建立图的程序 ,求解答。。。。
请问数据结构中用邻接矩阵法建立图的程序,为什么DepthFirstSearch(g,i); 没有执行,结果没有将图输出?(在tc2.0中)
#include <stdio.h>
#define MAXSIZE 20
typedef char VertexData;
typedef enum{DG,DN,UDG,UDN} GraphKind;
typedef struct ArcNode
{
int adj;
}ArcNode;
typedef struct
{
VertexData vertex[MAXSIZE];
ArcNode arc[MAXSIZE][MAXSIZE];
int vernum,arcnum;
GraphKind kind;
}AdjMatrix;
int visited[MAXSIZE];
int LocateVer(AdjMatrix *G,VertexData v)
{
int i;
for(i=0;i<G->vernum;i++)
if(v==G->vertex[i])
return i;
return -1;
}
void CreateDN(AdjMatrix *G)
{
int i,j,weight,k;
char v1,v2;
printf("please input the vernum and arcnum: ");
scanf("%d%d",&G->vernum,&G->arcnum);
for(i=0;i<G->vernum;i++)
{
printf("\nplease input one of the vertex:\n");
fflush(stdin);
scanf("%c",&G->vertex[i]);
}
for(i=0;i<G->vernum;i++)
for(j=0;i<G->vernum;j++)
G->arc[i][j].adj=0;
for(k=0;k<G->arcnum;k++)
{
printf("\nplease input the two vertex :\n");
fflush(stdin);
scanf("%c,%c",&v1,&v2);
i=LocateVer(G,v1);
j=LocateVer(G,v2);
G->arc[i][j].adj=1;
}
}
void DepthFirstSearch(AdjMatrix *g,int v)
{
int i;
printf("%c",g->vertex[v]);
visited[v]=1;
for(i=0;i<g->vernum;i++)
if(!visited[i]&&g->arc[v][i].adj==1)
DepthFirstSearch(g,i);
}
void TraverseGraph(AdjMatrix *g)
{
int i;
for(i=0;i<g->vernum;i++)
visited[i]=0;
printf("\nthe order of graph depth: \n");
for(i=0;i<g->vernum;i++)
{
if(!visited[i])
{ DepthFirstSearch(g,i);
printf("abcdj fdj idhf");
}
}
}
void main()
{
AdjMatrix G;
CreateDN(&G);
TraverseGraph(&G);
}
[解决办法]
for(i=0;i<g->vernum;i++)错误:g->vernum怎么会是0????