DFS(深度优先搜索)
简介
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的下一个邻接点 } }
----------------------------------------------------------------------------------------------------------------转载请说明出处----------------------------------------------------------------------------------------------------------------------
你要做一个不动声色的大人了。不准情绪化,不准偷偷想念,不准回头看。去过自己另外的生活。你要听话,不是所有的鱼都会生活在同一片海里。
————————村上春树