数据结构之图的基本操作

基本操作:

在这里插入图片描述

判断边是否存在:

在这里插入图片描述在这里插入图片描述
ps:
在邻接表中,要搜索某节点的整个边表才能找到是否存在边,O(1)~O(|v|)
在邻接矩阵中,只需要判断该边对应数组位置的值即可,O(1)
所以从判断是否存在边的角度看,邻接矩阵法更优

列出与某节点相邻的边:

在这里插入图片描述在这里插入图片描述
无向图:
在邻接矩阵中,只需要搜索对应行对应列即可,O(|V|)
在邻接表中,只需要遍历该节点的边表即可,O(1)~O(|V|)
所以在无向图中, 列出与某节点相邻的边时邻接表法更优
有向图:
在邻接矩阵中,只需要搜索对应行对应列即可,O(|V|)
在邻接表中,出边很容易,但是找入边需要遍历整个边表:
1、寻找出边:O(1)~O(|V|)
2、寻找入边:O(|E|) (遍历所有的边节点)
所以在有向图中,列出与某节点相邻的边时邻接矩阵法更优(但是存储稀疏图,E比较小)

在图中插入一个顶点:

在这里插入图片描述

ps:
在邻接表法中,将该顶点加入到顶点表中将边的关系加入到边表中,O(1)
在邻接矩阵法中,扩充一行和一列,放置对应关系,O(1)

在图中删除一个顶点:

无向图:
在这里插入图片描述在这里插入图片描述

ps:
在邻接表法中,删除该节点和对应的边表即可,O(|V|)
在邻接矩阵法中,删除该顶点对应的行与列即可,有以下两种情况,O(1)~O(|E|)
1、将后续元素前移,用D覆盖C,但是会让大量元素移动,代价太大
2、将删除节点对应行列置0,在顶点结构体中设置bool变量来标记节点的空

有向图:
在这里插入图片描述

在图中添加一条边:

在这里插入图片描述

ps:
在邻接表法中,在俩端节点的边表添加该边,O(1)
在邻接矩阵法中,把对应的俩个矩阵值修改即可,O(1)(头插法优于尾插法,O(1)是头插法的时间复杂度,尾插法还需要遍历边表)

在图中删除一个边:

在这里插入图片描述
ps:
在邻接表法中,遍历整个边表找到对应的边表节点,然后删除
在邻接矩阵法中,只需要修改对应位的值即可
所以在在删除边的操作中,邻接矩阵法更优

查找某顶点的第一个邻接点:

在这里插入图片描述

邻接矩阵:O(1)~O(|V|)
邻接表:O(1)

查找某边的权值:

在这里插入图片描述

核心问题:找边
邻接矩阵:O(1)
邻接表:O(1)~O(|V|)

查找某一顶点邻接点的下一个邻接点:

在这里插入图片描述

邻接矩阵:O(1)~O(|V|)
邻接表:O(1)

  • 5
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值