zoukankan      html  css  js  c++  java
  • 图的存储

    1.邻接矩阵

    typedef struct{
        char Vex[N];//顶点表 
        int Edge[N][N];//邻接矩阵,边表 
        int vexnum, arcnum;//图的当前顶点数和弧数 
    }MGraph;

    2.邻接表

    typedef struct ArcNode{//边表结点 
        int adjvec;//该弧所指向顶点的位置 
        struct ArcNode *next;//指向下一条弧的指针
        //int info;//网的边权值 
    }ArcNode;
    typedef struct VNode{//顶点表结点 
        char data;//顶点信息 
        ArcNode *first;//指向第一条依附该顶点的弧的指针 
    }VNode, AdjList[N];
    typedef struct{
        AdjList vertices;//邻接表 
        int vexnum, arcnum;//图的顶点数和弧数 
    }ALGraph;//邻接表存储的图类型 
    
    //确定顶点位置 
    int LocateVex(ALGraph *G, char v){
        for(int i = 0; i < (G->vexnum); i++){
            if(G->vertices[i].data == v)
                 return i;
        }
    }

    3.十字链表(有向图)

    typedef struct ArcNode{
        int tailvex, headvex;
        struct ArcNode *hlink, *tlink;
        //InfoType info; 
    }ArcNode;
    typedef struct VNode{
        char data;
        ArcNode *fisrtin, *firstout;
    }VNode;
    typedef struct VNode{
        VNode xlist[N];
        int vexnum, arcnum;
    }GLGraph;

     

    4.邻接多重表(无向图)

    typedef struct ArcNode{
        bool mark;
        int ivex, jvex;
        struct ArcNode *ilink, *jlink;
        //InfoType info; 
    }ArcNode;
    typedef struct VNode{
        char data;
        ArcNode *firstedge;
    }VNode;
    typedef struct{
        VNode adjmulist[N];
        int vexnum, arcnum;
    }AMLGraph;

  • 相关阅读:
    [leetCode]09.用两个栈实现队列
    ubuntu:无法获得锁;无法锁定管理目录
    [leetCode]07.重建二叉树
    [leetCode]剑指 Offer 06. 从尾到头打印链表
    [leetCode]剑指 Offer 05. 替换空格
    [leetCode]1330.翻转子数组得到最大的数组值
    [leetCode]312.戳气球
    UVALive
    CodeChef
    CodeChef
  • 原文地址:https://www.cnblogs.com/exciting/p/10088396.html
Copyright © 2011-2022 走看看