数据结构之 图的存储结构

本文详细介绍了图的多种存储结构,包括邻接矩阵(无向图、有向图及网)、邻接表(无向图、有向图)、十字链表、邻接多重表以及边集数组。邻接矩阵通过二维数组表示边的信息,邻接表结合数组或链表存储顶点和邻接关系,十字链表则包含入度和出度指针,邻接多重表关注边本身,边集数组存储顶点和边的起点、终点及权值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

图的存储结构

内存物理位置是线性的,图的元素关系是平面的 

邻接矩阵(无向图)

图的邻接矩阵(Adjacency Matrix)存储方式是用两个数组来表示图。一个一维数组存储图中顶点信息,一个二维数组(称为邻接矩阵)存储图中的边或弧的信息。

无向图的邻接矩阵是对称矩阵(0表示不存在顶点间的边,1表示顶点间存在边)。

邻接矩阵(有向图)

有向图的邻接矩阵不是对称矩阵,V1列之和表示V1的入度,V1的行之和表示出度。

邻接矩阵(网)

邻接表(无向图)

邻接表(AdjacencyList),把数组和链表结合一起来存储。用一个一维数组存储顶点,可以是数组(较容易读取顶点信息,更加方便)也可以是单链表。图中每个顶点Vi的所有邻接点构成一个线性表,由于邻接点的个数不确定,故而用单链表存储。

邻接表(有向图)

表示每个顶点的出度,只能表示出度或者入度,不能同时表示。

有向图的逆邻接表


十字链表

顶点  顶点   入度指针   出度指针

邻接多重表

边表结构:

 指向依附于顶点iVex的下一条边 指向依附于顶点jVex的下一条边
iVexiLinkjVexjLink

iVex和jVex是与某条边依附的两个顶点在顶点表中的下标

邻接多重表,边表结构存放的是一条边,而不是一个顶点。

边集数组

边集数组是由两个一维数组构成,一个是存储顶点的信息,另一个是存储边的信息,这个边数组每个数据元素由一条边的起点下标(begin)、终点下标(end)和权(weight)组成。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值