DFS

来源:互联网 发布:怎样进行博客seo 编辑:程序博客网 时间:2024/06/05 17:42

图的深度优先搜索遍历

1.从顶点1出发,访问他,找到其第一个邻接点
2.递归
3.直到所有的顶点都被访问

//定义邻接图#define MAXSIZE 100typedef struct ArcNode{    int adjvex;    struct ArcNode *nextarc;    int info;}//边表typedef struct VNode{    char data;    ArcNode *firstarc;}//表头结点表typedef struc{    VNode adjlist[MAXSIZE];    int vertex,edge;}typedef enum{TRUE,FALSE}Bool;Bool visited[MAXSIZE];//访问标记,查看是否已经访问过void DFS(AGraph *G,int v){//从v顶点开始对图G进行DFS    ArcNode *p;    visited[v]=TRUE;//置为已访问过,避免重复访问    Visit(v);//访问v结点,一般输出v结点的信息即可    p=adjlist[v]->firstarc;    while(p!=NULL)    {        if(!visited[p->adjvex])DFS(G,p->adjvex);        p=p->nextarc;    }}void DFS_travers_Graph(AGraph *G){    int n;    for(n=0;n<G->vertex;n++)        visited[n]=FALSE;    for(n=0;n<G->vertex;n++)        if(!visited[n])DFS(G,n);}
0 0
原创粉丝点击