DFS 图的深度优先遍历

typedef struct ANode//图的邻接表存储类型的定义 
{
  int adjvex;//该边的终点编号
  struct ANode *nextarc;//指向下一条边的指针
  InfoType info;//该边的相关信息        
}ArcNode; //边节点类型 
typedef struct Vnode
{
  Vertex data;//顶点信息
  ArcNode *firsttarc;//指向第一边 
}VNode;//邻接表头结点类型

typedef VNode AdjList[MAXV];//AdjList是邻接表类型
typedef struct
{
  AdjList adjlist;//邻接表
  int n,e;//图中顶点数n和边数e        
}ALGraph;//完整的图邻接表类型 

//图的深度优先遍历
void DFS(ALGraph *G,int v)
{
  ArcNode *p;
  visited[v]=1;//置已访问标记
  printf(“%d “,v);//输出被访问顶点的编号 
  p=G->adjlist[v].firstarc;//p指向顶点v的第一个邻接点
  while(p!=NULL)
  {
    if(visited[p->adjvex]==0)//若p->adjvex顶点未访问,递归访问它 
      DFS(G,p->adjvex);
    p=p->nextarc;//p指向顶点v的下一个邻接点              
  }     
}

    原文作者:数据结构之图
    原文地址: https://blog.csdn.net/zchlww/article/details/39613455
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞