//遍历
//深度-邻接表
Dfs (Graph g,int v)
{
ArcNode *p;
printf ("%d",v);
visited[v]=1;
p=g.adjlist[v].firstarc;
while(p!=NULL)
{
if(!visited[p->adjvex])
Dfs(g,p->adjvex);
p=p->nextarc;
}
}
//深度-邻接矩阵
Dfs (Graph *g,int v)
{
int j;
printf("%d",v);//访问
visited[v]=1;
for(j=0;j<n;j++)
{
m=g->arcs[v][j];
if (m&&!visited[j])
Dfs(g,j);
}
}
//广度-邻接表
Bfs (Graph g,int v)
{
LkQue Q;
InitQueue(&Q);
printf("%d",v);
visited[v]=1;
EnQueue(&Q,v);
while (!EmptyQueue(Q)){
v=Gethead(&Q);
OutQueue(&Q);
p=g.adjlist[v].firstarc;
while (p!=NULL)
{
if (!visited[p->adjvex])
{
printf("%d",p->adjvex);
visited[p->adjvex]=1;
EnQueue(&Q,p->adjvex);
}
p=p->nextarc;
}
}
}
//广度-邻接矩阵
Bfs (Graph g,int v)
{
LkQue Q;
int j;
InitQueue(&Q);
printf("%d",v);
visited[v]=1;
EnQueue(&Q,v);
while (!EmptyQueue(Q))
{
v=Gethead(&Q);
OutQueue(&Q);
for (j=0;j<n;j++)
{
m=g->arcs[v][j];
if (m && !visited[j])
{
printf("%d",j);
visited[j]=1;
EnQueue(&Q,j);
}
}
}
}