zoukankan      html  css  js  c++  java
  • 图的遍历

    /* 邻接表存储的图 - DFS */
     
    void Visit( Vertex V )
    {
        printf("正在访问顶点%d
    ", V);
    }
     
    /* Visited[]为全局变量,已经初始化为false */
    void DFS( LGraph Graph, Vertex V, void (*Visit)(Vertex) )
    {   /* 以V为出发点对邻接表存储的图Graph进行DFS搜索 */
        PtrToAdjVNode W;
         
        Visit( V ); /* 访问第V个顶点 */
        Visited[V] = true; /* 标记V已访问 */
     
        for( W=Graph->G[V].FirstEdge; W; W=W->Next ) /* 对V的每个邻接点W->AdjV */
            if ( !Visited[W->AdjV] )    /* 若W->AdjV未被访问 */
                DFS( Graph, W->AdjV, Visit );    /* 则递归访问之 */
    }
    
    /* 邻接矩阵存储的图 - BFS */
     
    /* IsEdge(Graph, V, W)检查<V, W>是否图Graph中的一条边,即W是否V的邻接点。  */
    /* 此函数根据图的不同类型要做不同的实现,关键取决于对不存在的边的表示方法。*/
    /* 例如对有权图, 如果不存在的边被初始化为INFINITY, 则函数实现如下:         */
    bool IsEdge( MGraph Graph, Vertex V, Vertex W )
    {
        return Graph->G[V][W]<INFINITY ? true : false;
    }
     
    /* Visited[]为全局变量,已经初始化为false */
    void BFS ( MGraph Graph, Vertex S, void (*Visit)(Vertex) )
    {   /* 以S为出发点对邻接矩阵存储的图Graph进行BFS搜索 */
        Queue Q;     
        Vertex V, W;
     
        Q = CreateQueue( MaxSize ); /* 创建空队列, MaxSize为外部定义的常数 */
        /* 访问顶点S:此处可根据具体访问需要改写 */
        Visit( S );
        Visited[S] = true; /* 标记S已访问 */
        AddQ(Q, S); /* S入队列 */
         
        while ( !IsEmpty(Q) ) {
            V = DeleteQ(Q);  /* 弹出V */
            for( W=0; W<Graph->Nv; W++ ) /* 对图中的每个顶点W */
                /* 若W是V的邻接点并且未访问过 */
                if ( !Visited[W] && IsEdge(Graph, V, W) ) {
                    /* 访问顶点W */
                    Visit( W );
                    Visited[W] = true; /* 标记W已访问 */
                    AddQ(Q, W); /* W入队列 */
                }
        } /* while结束*/
    }
    

      

  • 相关阅读:
    Hdu 1257 最少拦截系统
    Hdu 1404 Digital Deletions
    Hdu 1079 Calendar Game
    Hdu 1158 Employment Planning(DP)
    Hdu 1116 Play on Words
    Hdu 1258 Sum It Up
    Hdu 1175 连连看(DFS)
    Hdu 3635 Dragon Balls (并查集)
    Hdu 1829 A Bug's Life
    Hdu 1181 变形课
  • 原文地址:https://www.cnblogs.com/lsj2020/p/6027627.html
Copyright © 2011-2022 走看看