简介
DFS的过程是一个递归过程,它是从图中的某个顶点开始,首先访问起始点v,然后选择一个与顶点v相邻的且没有被访问的顶点w,以w为起始顶点,在进行DFS,直到图中所有与v相邻的顶点都被访问过为止。
访问过程中,须记录所有元素是否被访问过,可用全局数组记录编号,初始为0,已经访问为1。
往往采用DFS搜索迷宫问题的从入口到出口的所有路径。
运算步骤
void DFS(AdjGraph G,int v) { ANode *p; cout<<" "<<G.adjlist[v].data; visited[v] = 1;//访问顶点v,并标记 p = G.adjlist[v].firstarc;//p指向第一条弧头结点 while(p != NULL) { if(visited[p->adjvex] == 0)//若p->adjvex 未访问,递归访问 { DFS(G,p->adjvex); } p = p->nextarc;//p指向顶点v的下一个邻接点 } }