加入收藏 | 设为首页 | 会员中心 | 我要投稿 网站开发网_马鞍山站长网 (https://www.0555zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

图的顺序存储结构 包括C语言实现

发布时间:2022-07-10 03:29:33 所属栏目:编程 来源:互联网
导读:使用图结构表示的数据元素之间虽然具有多对多的关系,但是同样可以采用顺序存储,也就是使用数组有效地存储图。 使用数组存储图时,需要使用两个数组,一个数组存放图中顶点本身的数据(一维数组),另外一个数组用于存储各顶点之间的关系(二维数组)。
  使用图结构表示的数据元素之间虽然具有“多对多”的关系,但是同样可以采用顺序存储,也就是使用数组有效地存储图。
 
  使用数组存储图时,需要使用两个数组,一个数组存放图中顶点本身的数据(一维数组),另外一个数组用于存储各顶点之间的关系(二维数组)。
  存储图中各顶点本身数据,使用一维数组就足够了;存储顶点之间的关系时,要记录每个顶点和其它所有顶点之间的关系,所以需要使用二维数组。
 
  结构代码表示:
  纯文本复制
  #define MAX_VERtEX_NUM 20                   //顶点的最大个数
  #define VRType int                          //表示顶点之间的关系的变量类型
  #define InfoType char                       //存储弧或者边额外信息的指针变量类型
  #define VertexType int                      //图中顶点的数据类型
  typedef enum{DG,DN,UDG,UDN}GraphKind;       //枚举图的 4 种类型
  typedef struct {
      VRType adj;                             //对于无权图,用 1 或 0 表示是否相邻;对于带权图,直接为权值。
      InfoType * info;                        //弧或边额外含有的信息指针
  }ArcCell,AdjMatrix[MAX_VERtEX_NUM][MAX_VERtEX_NUM];
  typedef struct {
      VertexType vexs[MAX_VERtEX_NUM];        //存储图中顶点数据
      AdjMatrix arcs;                         //二维数组,记录顶点之间的关系
      int vexnum,arcnum;                      //记录图的顶点数和弧(边)数
      GraphKind kind;                         //记录图的种类
  }MGraph;

(编辑:网站开发网_马鞍山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!