邻接矩阵存储图的深度优先遍历 的部分代码

Posted on 2020-05-08 10:56  黑炽  阅读(245)  评论(0编辑  收藏  举报
typedef struct GNode* PtrToGNode;
typedef PtrToGNode MGraph; /* 以邻接矩阵存储的图类型 */
bool Visited[MaxVertexNum]; /* 顶点的访问标记 */
struct GNode {
    int Nv;  /* 顶点数 */
    int Ne;  /* 边数   */
    WeightType G[MaxVertexNum][MaxVertexNum]; /* 邻接矩阵 */
};

void DFS(MGraph Graph, Vertex V, void (*Visit)(Vertex)) {
    Vertex i;
    Visited[V] = 1;
    Visit(V);

    for (i = 0; i < Graph->Nv; i++)
        if (Graph->G[V][i] == 1 && !Visited[i])
            DFS(Graph, i, Visit);

    return;
}
void Visit(Vertex V) { printf(" %d", V); }

MGraph CreateGraph(); /* 创建图并且将Visited初始化为false */
/*主要是邻接矩阵和邻接表两种,邻接矩阵主要是看相邻得两个顶点之间是否有边*/