图依赖邻接表进行深度搜索/C++
图依赖邻接表进行深度搜索
具体实现代码 DFS 函数
该函数在进行图的搜索时,在岔路优先字典序,在找到时候返回1,否则返回0,如果我们的图节点里有G,但是我们没有把G连接入这个图,那么就会搜素不到这个G。
int DFS(Graph g,int startVex,int targetVex,int *visited){
cout<< g->vertex[startVex].element<<" ";
if(startVex==targetVex) return 1;
visited[startVex]=1;
node nd=g->vertex[startVex].next;
while(nd){
if(!visited[nd->nextVex])
if(DFS(g,nd->nextVex,targetVex,visited))
return 1;
nd=nd->next;
}
return 0;
}
main函数
int main(){
Graph graph = Create();
for(int c='A';c<='G';++c)
addVex(graph,(char)c);
addEdge(graph,'A','B');
addEdge(graph,'B','C');
addEdge(graph,'B','D');
addEdge(graph,'B','E');
addEdge(graph,'E','F');
printTable(graph);
//值得注意的是,我们在创建图的结构时并没有为他准备,是否访问的数组/队列来储存他的访问状态,所以我们需要外部生成一个
int arr[graph->vex];
//C++需要为我们定义的数组变量进行初始化操作否则里面的值可能会影响到我们对图的遍历
for(int i=0;i<=graph->vex;i++)arr[i]=0;
cout<<endl<<DFS(graph,0,6,arr);
return 0;
}