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:边的信息