数据结构与算法之美-18 |图

一、图(Graph)

和树比起来,图是一种更加复杂的非线性表结构。
树中的元素我们称为节点,图中的元素我们就叫做顶点(vertex)。图中的一个顶点可以与任意其他顶点建立连接关系。这种建立的关系叫做边(edge),一个顶点和其他顶点有多少连线,我们称之为度(degree)。
图有好几种,无向图(双向箭头),有向图(单向箭头),加权图(带有权重)…

二、图的存储方式

一.邻接矩阵存储(Adjacency Matrix,适合小数据量存储)

在这里插入图片描述
这张图刚开始学习的人可能会一脸懵逼,我觉得这张图有一些不恰当的地方,比如不应该用数字表示图,再用矩阵去表示图的关系,很容易让人陷入去计算矩阵的误区。
下面这张图就比较合理,看得懂下面这张图,看懂上面的图不成问题。
在这里插入图片描述
邻接矩阵存放图有一个很大的缺点,就是会浪费掉很多的空间,比如无向图,其实有一半都表示的是相同的信息,另外如果图有很多顶点(对应矩阵有很多行),但是行与行之间的关系并没有那么密切,比如微信用户有几亿,但是一般人的好友也就几百个,用邻接矩阵来存储浪费的空间不可想象。
邻接矩阵也有优点,存储方式简单,在获取两个顶点的关系的时候非常高效,对于小数据量的图来讲,邻接矩阵是很好的存储方式

二.邻接表存储方法(Adjacency List)

邻接表比较像散列表(哈希表)中的链式法。

1、无向邻接表

在这里插入图片描述

2、有向邻接表

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值