25考研数据结构复习·6.2图的存储及基本操作

邻接矩阵

数组实现的顺序存储,空间复杂度高,不适合存储稀疏图

👩‍💻 如何求顶点的度、入度、出度?

  1. 无向图
    1. 第i个结点的度 = 第i行(或第i列)的非零元素个数。
  2. 有向图
    1. 第i个结点的出度 = 第i行非零元素个数
    2. 第i个结点的入度 = 第i列非零元素个数
    3. 第i个结点的度=第i行、第i列的非零元素个数之和
  • 邻接矩阵法求顶点的度/出度/入度的时间复杂度O(|V|)

邻接矩阵存储无向图的空间复杂度为O(|V|^2),适合存储稠密图

👌 设图G的邻接矩阵为A(矩阵元素为0/1),则An的元素An[i][j]等于由顶点i到顶点j的长度为n的路径的数目

邻接表

顺序+链式存储

  1. 图的邻接表表示方式并不唯一
  2. 只要确定了顶点编号,图的邻接矩阵表示方式唯一

十字链表

存储有向图

空间复杂度:O(|V|+|E|)

邻接多重表

存储无向图

  1. 空间复杂度:O(|V|+|E|)
  2. 删除边、删除结点等操作很方便


邻接表(找顶点的入边不方便)邻接矩阵(空间复杂度高)十字链表(有向图)邻接多重表(无向图)
空间复杂度无向图O(|V|+2|E|);有向图O(|V|+|E|)O(|V|^2)O(|V|+|E|)O(|V|+|E|)
适合用于存储稀疏图存储稠密图只能存有向图只能存无向图
表示方式不唯一唯一不唯一不唯一
计算度/出度/入度计算有向图的入度、出度不方便,其余很方便必须遍历对应行或列
找相邻的边找有向图的入边不方便,其余很方便必须遍历对应行或列很方便很方便
删除边或顶点无向图中删除边或顶点都不方便删除边很方便,删除顶点需要大量移动数据很方便很方便

图的基本操作 

(时间复杂度)邻接矩阵邻接表
Adjacent(G,x,y)无向图/有向图:O(1)无向图/有向图:O(1)-O(|V|)
Neighbors(G,x)无向图/有向图:O(|V|)无向图:O(1)-O(|V|);有向图:O(|E|)
InsertVertex(G,x)无向图/有向图:O(1)无向图/有向图:O(1)
DeleteVertex(G,x)无向图/有向图:O(|V|)无向图:O(1)-O(|E|);有向图:删出边:O(1)-O(|V|) 删入边:O(|E|)
AddEdge(G,x,y)无向图/有向图:O(1)无向图/有向图:O(1)
FirstNeighbor(G,x)无向图/有向图:O(1)-O(|V|)无向图:O(1);有向图:找出边邻接点:O(1) 找入边临界点:O(|E|)O(1)-O(|E|)
NextNeighbor(G,x,y)无向图:O(1)-O(|V|)无向图:O(1)
Get_edge_value(G,x,y)无向图/有向图:O(1)无向图/有向图:O(1)-O(|V|)
Set_edge_value(G,x,y,v)无向图/有向图:O(1)无向图/有向图:O(1)-O(|V|)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Annabelle.02

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值