資料結構 圖的深度優先遍歷 C
阿新 • • 發佈:2018-11-07
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!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。}