邻接表O(1)删除节点


我才知道链表有个 O ( 1 ) O(1) O(1)的删除方法,而我们建图中常用的就是邻接表得哇

邻接表建图

比如我们要建这样一个单向图
在这里插入图片描述
插入元素的过程是这样的,比如把⑤节点插入进去
在这里插入图片描述

删除节点

以前我就以为删除节点要从头结点开始找,找到之后才删除,这个方法的复杂度就是线性的
然后今天才知道阔以 O ( 1 ) O(1) O(1)删除,就是把后面的节点直接覆盖上去
比如这里以删除③节点为例:
在这里插入图片描述

代码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
邻接矩阵和邻接表是两种常用的表示图的数据结构。它们的主要区别在于存储方式和时间复杂度。 邻接矩阵是一个二维数组,用于表示图中节点之间的连接关系。假设图有n个节点,那么邻接矩阵是一个n×n的矩阵,其中矩阵的第i行第j列元素表示节点i到节点j是否存在边。对于无向图来说,邻接矩阵是对称的,即矩阵的第i行第j列元素与第j行第i列元素相等。 邻接表是一种链表的形式用于表示图中每个节点的邻居节点。它使用一个数组来存储所有节点,并通过链表或数组等方式存储每个节点的邻节点列表。对于有向图来说,邻接表只存储出边信息,而对于无向图来说,邻接表会存储双向边信息。 区别: 1. 存储空间:邻接矩阵需要n×n的空间,而邻接表需要O(n+e)的空间,其中e是边的数量,通常情况下e<<n^2。 2. 时间复杂度:邻接矩阵可以在O(1)的时间内判断两个节点之间是否有边,但是遍历某个节点的所有邻居节点的时间复杂度是O(n)。而邻接表在遍历某个节点的邻居节点时时间复杂度是O(de),其中d是该节点的度数,e是边的数量。但是判断两个节点之间是否有边的时间复杂度是O(d)。 3. 稀疏图和稠密图:邻接矩阵适用于稠密图,即边的数量接近n^2;邻接表适用于稀疏图,即边的数量远小于n^2。 4. 插入和删除边的效率:邻接矩阵插入和删除边的效率都是O(1),而邻接表在插入和删除边时需要遍历链表或数组,效率取决于链表或数组的长度。 因此,选择使用邻接矩阵还是邻接表应该根据具体应用场景和图的特征来进行权衡。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值