数据结构(10)图的概念、存储

目录

10.1.概念

10.2.存储

10.2.1.邻接矩阵

10.2.2.邻接表


10.1.概念

定义:

图,用来表示多对多的关系,比如地图里城市之间的通路、比如人际关系。

图由顶点和边组成,顶点是图里的每个结点,边是顶点之间的通路,可以一条边都没有,但是不能一个顶点都没有。

分类:

图按照边分,可分为两种:

  • 有向图,边是有方向的,A—>B表示A可以到B,B不能到A。
  • 无向图,边是无方向的,A—B表示A可以到B,B也可以到A。

图按照点与边的数量,可分为两种:

  • 稀疏图,点多边少
  • 稠密图,点少边多
  • 完全图,特殊的稠密图,每个顶点间都有边相连。

符号表示:

顶点集合

V
边的集合E

无向边

(V,W),表示V,W双向连通

有向边

<V,W>,表示V—>W。

10.2.存储

图有两种存储方式:

  • 邻接矩阵
  • 邻接表

10.2.1.邻接矩阵

邻接矩阵,用一个二维的数组表示图。

G[i][j]=1,表示V(i)、V(j)之间有一条边。

G[i][j]=0,表示V(i)、V(j)之间没有边。

以一个无向的稀疏图的存储为例:

ABCDE
A01001
B10110
C01010
D01101
E10010

可以看到用邻接矩阵存放点多边少的图,会存在大量记录都是0,没有任何意义,浪费了大量内存,因此,邻接矩阵适合存放稠密图(尤其是完全图)、不适合存放稀疏图(会有大量内存被浪费)。

10.2.2.邻接表

邻接表,用一组链表来表示图,每一条链表表示某个顶点和其他顶点的连同关系。

以一个稠密的无向图的存储为例:

 可以看到邻接表里单个结点间的连接关系被多次重复描述也浪费了不必要的内存,因此,邻接矩阵适合存放稀疏图、不适合存放稠密图。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

_BugMan

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

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

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

打赏作者

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

抵扣说明:

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

余额充值