zoukankan      html  css  js  c++  java
  • 图存储结构

    1,邻接矩阵(数组)

    ①邻接矩阵是指用一个二维数组存储顶点间的相邻关系。

      如果是无权值的图,如果两点是相邻边则矩阵对应元素值为1,否则为0.

      如果是网,则用其权值表示相邻边的元素值,否则用一个无穷数表示。(因为0,甚至负数都可以表示权值)

    ②用一个顺序表来存储顶点。

    #define INFINITY 4294967295; //定义一个无穷大的数,这里假定是32位的最大数,即2^32-1。

    #define MAX_VERTEX_NUM 20;//顶点数

    typedef enum GraphType{dg,udg,dn,udn};//有向图,无向图,有向网,无向网

    typedef struct AdjMWGraph

    {

     int Edge[MAX_VERTEX_NUM][MAX_VERTEX_NUM];  //点矩阵

     int Vertices[MAX_VERTEX_NUM]; //顶点

     int numE;            //当前的边数

     int numV;            //当前的顶点数

     emu GraphType g_kind;//图的类型

    };

    2,邻接表

    用链表和数组结合起来存储节点之间的关系。

    typedef struct EdgeNode//边表节点

    {

    int adjVex;//邻接点的位置

    struct ArcNode *nextEdge;//指向下一条边的指针

    //int weight;//权值,如果是网

    }EdgeNode;

    typedef struct vNode//顶点边的节点

    {

    int vertex;//顶点位置

    EdgeNode *firstEdge;//顶点的第一条邻接边
    }VertexNode,AdjList[MAX_VERTEX_NUM]; 

    typedef struct

    {

    AdjList adjList;//邻接表

     int numE;            //当前的边数

     int numV;            //当前的顶点数

    emu GraphType g_kind;//图的类型

    }ALGraph;

    3,十字链表

    十字链表是对于有向图来说的,指的是对于每一条弧,存储其弧头和弧尾,对于每一个顶点存储其入弧和出弧。

    4,邻接多重表

     邻接多重表是对于无向图来说的,类似于十字链表。

  • 相关阅读:
    openGL 纹理05
    音视频系列文章
    webrtc系列文章
    ! [rejected] master -> master (non-fast-forward)
    openGL 预定义变量04
    Android项目实战--手机卫士24--程序锁的实现以及逻辑
    大数记录之,大数乘整型数nyoj832
    与IO相关的等待事件troubleshooting-系列9
    发布文章时多少天、多少小时、多少分前发布功能
    CSS3之边框图片border-image
  • 原文地址:https://www.cnblogs.com/273809717/p/2817591.html
Copyright © 2011-2022 走看看