7.2 图的存储结构

邻接矩阵、邻接多重表
邻接表、逆邻接表、十字链表

数组表示法(邻接矩阵表示)

有向图的邻接矩阵表示:
数组表示法例题
无向图中顶点Vi的度TD(Vi)是邻接矩阵A中第 i 行元素之和.

邻接表

  • 无向图中顶点Vi的度为第i个单链表中的结点数

无向图的邻接表无向图的邻接表

  • 有向图中
    顶点Vi的出度为第i个单链表中的结点个数
    顶点Vi的入度为整个单链表中邻接点域值是i的结点个数
  • 逆邻接表:有向图中对每个结点建立以Vi为头的弧的单链表

有向图的邻接表和逆邻接表

邻接表&逆邻接表

有向图的十字链表表示法

十字链表是有向图的一种存贮方式
其中,图中的顶点顶点结点单元表示。弧结点单元表示。

弧节点单元

弧结点

  • tailvex / headvex:
    尾/头域:弧尾和弧头两个顶点在图中的位置
  • hlink: 弧头相同的下一条弧
  • tlink: 弧尾相同的下一条弧
  • info: 该弧的相关信息

顶点节点单元

顶点结点

  • firstin: 顶点为弧头的第一个弧结点;//可求入度
  • firstout: 顶点为弧尾的第一个弧结点;//可求出度
  • data: 该结点的相关信息

表示样例

对第一个结点而言,蓝色线串起了以1为弧头的弧,绿线串起了以1为弧尾的弧
十字链表

无向图邻接多重表表示法

邻接多重表是无向图的一种存贮方式
其中,图中的顶点顶点结点单元表示。边节点单元表示。
邻接表的差别在于 ,邻接表用2个顶点表示一条边,而邻接多重表用1个顶点表示一条边。

边节点单元

边节点

  • mark,访问标志;
  • ivex/jvex:边依符的两个顶点的位置;
  • ilink/jlink:两个顶点的下一条边;
  • info:边的信息

顶点节点单元

顶点节点

表示样例表示样例

posted @ 2020-08-14 20:36  夜明_Yoake  阅读(115)  评论(0编辑  收藏  举报