深度优先搜索(Detph_First_Search)DFS,算法思路很简单,就是一条路走到黑,从一个顶点出发如果可以继续往下走(有相连的边)就继续往下走,如果没有则返回最近的一个顶点,看能不能从这个顶点访问到更多的顶点,知道所有的顶点都被访问过位置。虽然是递归的算法,思路很简单,但是如果真要实现,感觉还是比较困难。可能是自己当时考研的时候没学的很好,一天也仅仅是对算法了解了,连图都没建立出来。算法如下:
bool visited[max]//访问控制数组
vexs[];//顶点元素数组
arc[][];//边关系矩阵
void DFSTraverse(Grap G){
for(v=0;v<G.vesx.length;++v){
visited[v] = false;
}
for(v=0;v<vesx.lengthlv++){
if(!visited[v]){
DFS(G,v);
}
}
}
void DFS(Graph G,int v){
int j;
visit(v);
visited[v] = true;
for(j=0;j<G.vesx.length;j++){
if(G.arc[i][j] == 1 && !visited[j]){
DFS(G,j);
}//if
}//for
}