在算法实现方面要求,熟练掌握图的两种遍历方法,
DFSTraverse(G, v, Visit());
//从顶点v起深度优先遍历图G,并对每个顶点调用函数Visit一次且仅一次。
void DFS( ALGraph *G , int v )//用邻接表实现,遍历图G中与顶点v相连的顶点
{ LinkNode *p ;
Visited[v] = TRUE ; // 置访问标志,
visit(v) ; //访问顶点v
p = G->AdjList[v].firstarc; //链表的第一个结点
while ( p != NULL )
{ if ( !Visited[p->adjvex] )
DFS( G, p->adjvex ) ;
p = p->nextarc ;//从v的未访问过的邻接顶点出发深度优先搜索
}
}
void DFS_traverse_Graph(ALGraph *G)//遍历图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 );
}
BFSTraverse(G, v, Visit());
//从顶点v起广度优先遍历图G,