【2019/11/3】图的表示方法(邻接矩阵、邻接表、链式前向星)

本文详细介绍了图的三种表示方法:邻接矩阵适用于无权或有权图,邻接表节省空间适合稀疏图,链式前向星则是无排序的高效表示。对于稠密图,邻接矩阵更优;而稀疏图则推荐使用邻接表或链式前向星。链式前向星在某些情况下比邻接表更快。
摘要由CSDN通过智能技术生成

一、邻接矩阵

构造一个二维矩阵M = {mi, j}。
如果图是无权图,那么仅需要表示边的邻接关系。这时每个元素mi, j的取值只能是0或1:

如果图是有权图,那么还需要表示边权。权值有时候会取0,所以表示方法改成:

当用邻接矩阵表示无向图时,需要同时添加有向边<i, j>和<j, i>,得到的邻接矩阵关于主对角线对称。

二、邻接表

每个节点至少包含当前节点的编号和下一个节点的指针。每个节点的指针都指向邻接节点。邻接节点的存储是无序的,要查找一个节点的某个邻接节点,就要从该节点开始一直沿下一个节点的指针访问到目标节点或下一个节点的指针为空为止(此时代表未找到该邻接节点)。
也可以用向量数组来方便地保存邻接表。
对有权边,在下一个节点添加一个元素,用于保存权。对有的题目,可以只用邻接表保存邻接关系,而用额外的数组去存储每条边的权。

三、链式前向星

这是一种比较新的图的表示方法。前向星是一种特殊的边数组。我们把边数组{<u, v>n}中的每一条边先后按照起点u、终点v排序,并记录下以某个点为起点的所有边在数组中的起始位置和存储长度,就完成了前向星的构造。
但是这个过程需要用到快排,使得时间复杂度为O(n log n)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值