五、无向图的建立及遍历操作
程序清单:
#include“stdio.h”
#include“alloc.h”
typedefstructnode
{
intadjvex;
struct node *next;
}edgenode;
tyedef struct vnode
{ int vertex;
edgenode*firstedge;
} vertexnode;
typedefvertexnode adjlist[10];
typedefstruct
{
adjlistal;
int n,e;
}graph;
graph*g;
int visited[10];
graph*creat( )
{inti ,j,k;
edgenode*s;
scanf(“%d%d”,&g->n,&g->e);
for(i=1;in;i++)
g->al.firstedge = NULL;
for(i=1;ke;k++)
{
scanf(“%d%d”,&i,&j);
s= malloc(sizeof(edgenode));
s->adjvex= j;
s->next = g->al.firstedge;
g->al.firstedge=s;
s= malloc(sizeof(edgenode));
s->adjvex=i;
s->next = g->al[j].firstedge;
g->al[j].firstedge= s;
}
return g;
}
void dfs(graph *g , int i)
{
edgenode*p;
printf(“visit vertext:%d\n”,i);
visited=1;
p=g->al.firstedge;
while(p)
{
if(!visited[p->adjvex];
dfs(g,p->adjvex);
p=p->next;
}
}
main( )
{
inti;
graph *g;
g = creat( );
for(i=1;in;i++)
visited=0;
for(i=1;in;i++)
if(!visited)
dfs(g , i);
}
这程序看了半天不知道什么意思···也不知道是不是什么地方出了错
|