数据结构笔记--图
图
图的概念
基本术语
抽象数据类型
大学表示集合,小写表示集合的元素
图的存储结构
邻接矩阵表示法(数组)
无向图
有向图
有权图
邻接矩阵的优缺点
代码实现
邻接表表示法(链式)
结构
无向图
有向图
逆邻接表可以使求度更容易
邻接表的优缺点
邻接矩阵与邻接表的对比
代码实现
十字链表表示法(尚未自学)
用一个链表来表示邻接表与逆邻接表
邻接多重表
概念
邻接多重表(adjacent multiList)是无向图(网)的另一种链式存储结构。
在此存储结构中,
图的顶点信息存放在顶点数组中,数组元素有两个域:
data域:存放与顶点相关的信息;
firstedge域:指向一个单链表,此单链表存储所有依附于该顶点的边的信息。
这些单链表的一个表结点对应一条边,表结点有六个域:
mark:为标志域,用来标记该边是否被访问过;
ivex和jvex:分别存放该边两个顶点在图中的位置;
ilink:指向下一条依附于顶点ivex的边对应的表结点;
jlink:指向下一条依附于顶点jvex的边对应的表结点。
info:该域存放该边相关的信息,实际上就是弧的权值,对于无向图,info域可省略;
适宜应用(与邻接表对比)
决邻接表存储无向图时同一条边要存储两次的问题。
邻接多重表主要用于存储无向图。因为如果用邻接表存储无向图,每条边的两个边结点分别在以该边所依附的两个顶点为头结点的链表中,这给图的某些操作带来不便。例如,对已访问过的边做标记,或者要删除图中某一条边等,都需要找到表示同一条边的两个结点。因此,在进行这一类操作的无向图的问题中,采用邻接多重表作存储结构更为适宜。