数据结构与算法之图的存储-邻接表法

邻接表法 (顺序 + 链式存储)

图有以下四种存储方式

  1. 邻接矩阵:数组实现的顺序存储,空间复杂度高,不适合存储稀疏图
  2. 邻接表:顺序 + 链式存储
  3. 十字链表:存储有向图
  4. 邻接多重表:存储无向图

结构 (顺序 + 链式存储)

//顶点
typedef struct VNode{
	VertexType data;  //顶点信息
	ArcNode *first;  //第一条边/弧
}VNode,AdjList[MaxVertxNum];

//邻接表存储的图
typedef struct{
	AdjList vertices;
	int vexnum,arcnum;
}ALGraph;

//边/弧
typedef struct ArcNode{
	int adjvex;  //边/弧指向那个结点
	struct ArcNode *next;  //指向下一条弧
	//InfoType info;  //边权值
}ArcNode;

邻接表法——无向图说明

  1. 边结点的数量是 2 ∣ E ∣ 2|E| 2E,整体空间复杂度为 O ( ∣ V ∣ + 2 ∣ E ∣ ) O(|V|+2|E|) O(V+2E)
  2. 度:遍历和顶点相关的边链表即可;有多少个边结点,度就是多少
  3. 图的邻接表表示方式并不唯一

邻接表法——有向图说明

  1. 边结点的数量是|E|,整体空间复杂度为 O ( ∣ V ∣ + ∣ E ∣ ) O(|V|+|E|) O(V+E)
  2. 度:入度 + 出度
  3. 出度:遍历和顶点相关的边链表即可;有多少个边结点,出度就是多少
  4. 入度:除该节点外,遍历所有指向当前结点的结点,有多少个结点指向当前结点,入度就是多少
  5. 图的邻接表表示方式并不唯一

知识回顾与重要考点

邻接表邻接矩阵
空间复杂度无向图 $O(V
适合用于存储稀疏图存储稠密图
表示方式不唯一唯一
计算度/入度/出度计算有向图的度、入度不方便,其余很方便必须遍历对应行或列
找相邻的边找有向图的入边不方便,其余很方便必须遍历对应行或列
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

five-five

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

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

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

打赏作者

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

抵扣说明:

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

余额充值