【数据结构算法】图(三):存储结构(邻接表,十字链表,邻接多重表,边集矩阵)

由于邻接矩阵这种存储结构存在一定空间浪费,因此考虑用邻接表

邻接表

这是一种数组与链表结合一起来存储。

无向图

这里写图片描述

有向图(把顶点当弧尾)

这里写图片描述

有向图(把顶点当弧头)【这种叫做逆邻接表】

这里写图片描述


十字链表

邻接表固然优秀,但也有不足的地方,比如对有向图的处理的时候,有时需要建立逆邻接表。
十字链表将邻接表和逆邻接表整合在一起。
十字链表虽然结构复杂,但其创建图的时间复杂度和邻接表是相同的。
这里写图片描述


邻接多重表

邻接表固然优秀,但也有不足的地方,比如对无向图的处理的时候,重点关注的顶点,但要是重点关注边的时候,比如对已经访问过的边做标记或者删除某一条边的时候(这种时候要做好几步操作,因为某条边可能会在很多线性表中出现,如下图),就不是那么方便了。就要考虑邻接多重表。
这里写图片描述
邻接多重表的特点:
这里写图片描述
这里写图片描述


边集矩阵

有向图

这里写图片描述

猜你喜欢

转载自blog.csdn.net/qiu931110/article/details/80429589