分享一下我老师大神的人工智能教程!零基础,通俗易懂!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。}