- 图的深度优先搜索算法的基本思想
找图中任意一个结点,将其标记成为已访问。然后任意访问它的一个未被访问的邻接结点,如果新的被访问的临接结点全部被访问,就退回上一个最近被访问的结点。
int visit[maxSize]; //定义全局数组,
//用来存放已经访问过的结点
void DFS(AGraph *G,int v) //v用来记录访问数组的下标
{
ArcNode *p;
visit[v] = 1; //v被访问记录为1
Visit(v); //访问顶点v,不需要纠结如何实现
p=G->adjlist[v].firstarc; //p指向邻接表v位置的结点
while(p!=NULL) //循环访问未被访问的结点
{
if(visit[p->nextarc]==0)
{
DFS(G,p->adjvex //递归判断下一个结点
}
p->nextarc;
}
}