1. 程式人生 > >資料結構 圖的深度優先遍歷 C

資料結構 圖的深度優先遍歷 C

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               
Boolean visited[MAX_VERTEX_NUM]; //訪問標誌陣列。Status (*VisitFunc)(int v); //VisitFunc是訪問函式,對圖的每個頂點呼叫該函式。void
DFSTraverse (Graph G, Status(*Visit)(int v)) //圖的深度優先遍歷。
{    VisitFunc = Visit;    for(v=0; v<G.vexnum; ++v)        visited[v] = FALSE; //訪問標誌陣列初始化。    for(v=0; v<G.vexnum; ++v)        if
(!visited[v])            DFS(G, v); //對尚未訪問的頂點呼叫DFS。}void DFS(Graph G, int v) //從第v個頂點出發遞迴地深度優先遍歷圖G。{    visited[v]=TRUE;    VisitFunc(v); //訪問第v個頂點。    for(w=FirstAdjVex(G,v); w>=0; w=NextAdjVex(G,v,w))    //FirstAdjVex返回v的第一個鄰接頂點,若頂點在G中沒有鄰接頂點,則返回空(0)。
    //若w是v的鄰接頂點,NextAdjVex返回v的(相對於w的)下一個鄰接頂點。    //若w是v的最後一個鄰接點,則返回空(0)。        if(!visited[w])            DFS(G, w); //對v的尚未訪問的鄰接頂點w呼叫DFS。}
           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述