数据结构之图(存储)

目录

在这里插入图片描述

邻接矩阵法

正常图

这里无向图一条边代表两个一(A行B列为1则B行A列一定为1,同理0也是)
这里有向图的一条边代表一个1(A行B列为1就代表有A指向B的边)
在这里插入图片描述

在这里插入图片描述

如何求顶点的度(入度/出度)
无向图
比如求B检查B那一行(或那一列)对应有几个1
它的度就是多少
有向图
比如求A的入度和出度
出度,检测A那一行有几个1
入度,检测A那一列有几个1
在这里插入图片描述

带权图的存储

当两条边没有互相连接的话
对应的矩阵上面可以填无穷
有一种是在自己对自己的时候写的是0(知道就行)
在这里插入图片描述
在这里插入图片描述

性能分析

邻接矩阵适合用于存储稠密图
当边比较少时会浪费很多空间

在这里插入图片描述
无向图的邻接矩阵可以只存上三角/下三角区域
这是对称矩阵的压缩存储
在这里插入图片描述

邻接矩阵法的性质

1.A^n矩阵内的元素代表的东西
适用于无向图和有向图
在这里插入图片描述
A^2
根据矩阵的性质奥(线性代数学过)
A^n【i】【j】的值代表从i节点到j及诶单有几条长度为n的路径
比如图中这个吧
A^2=A11×A14((A->B)×(B->D))+…如果=0就说明A从B带D路径不通
如果为1的话说明A到B和B到D都通,那长度为2的路不就有一条咯
后面的同理
在这里插入图片描述
A^2和A相乘不就是A ^3
然后[A][D]=1(这个1是A到A有一条路径长为2的路径)×0(没有一套从A到D路径为1的路径)+0×1+1(有一条从A到C的路径长为2)×1(有一条从C到D长度为1道路一条)+0×0=1(代表从A到D长度为3的路有一条)

小总结

在这里插入图片描述

邻接表法

顺序+链式储存
在这里插入图片描述

类似于树中的孩子表示法
在这里插入图片描述
有向图
在这里插入图片描述

无向图的度和有向图的出度是比较好找的(遍历对应节点的链表即可)
有向入度的话就把所有的节点的边链表遍历一遍
邻接表的表示方式不为1
在这里插入图片描述
但是邻接矩阵是唯一的奥
在这里插入图片描述

十字链表(储存有向图)

在这里插入图片描述

两种结构体奥
从绿色指针域一种遍历是该节点指向的节点
从橙色节点的话遍历是指向自身的节点
在这里插入图片描述

邻接多重表(储存无向图)

上面两种方法的弊端

在这里插入图片描述
邻接多重表
在这里插入图片描述
就是
比如找A吧
从firstedge往后走
第一条边不是0-1(A-B这条边)
你从橙色指针域走的话
还是找与A相连的边,如果你找绿色指针域的话
就是和A相连的另一个顶点(这里是B奥)的另一条边

删除(节点或边的删除)也很方便
在这里插入图片描述

总结

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小袁拒绝摆烂

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

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

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

打赏作者

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

抵扣说明:

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

余额充值