数据结构之邻接多重表

一、特点

存储效率高:对于无向图,邻接多重表能够避免邻接表中同一条边需要存储两次的问题,因为每条边在邻接多重表中只被表示一次。
灵活性高:由于每条边同时链接在两个链表中(分别对应其两个顶点),因此在进行边的增删查改等操作时更加方便。
可读性强:邻接多重表的结构清晰,能够直观地表示无向图中顶点与边之间的关系。

二、结构

邻接多重表由顶点表和边表组成:

顶点表:存储图中的顶点信息,每个顶点元素包含两个域:data域用于存放与顶点相关的信息;firstedge域(或类似指针)指向依附于该顶点的第一条边在边表中的节点。
边表:存储图中边的信息,每个边表节点包含多个域,以下是常见的几个域:
mark:标志域,用于标记该边是否被访问过或进行过其他特定操作。
ivex和jvex:分别存放该边两个顶点在顶点表中的位置(即下标)。
info:信息域,对于带权图,可以存放边的权值;对于无向图,此域可省略。
ilink和jlink:分别指向下一条依附于顶点ivex和jvex的边在边表中的节点。

三、构建方法

构建邻接多重表通常遵循以下步骤:

1、初始化:
创建一个空的邻接多重表,包括顶点表和边表。

2、填充顶点表
根据无向图的顶点数,在顶点表中创建相应数量的顶点元素,并初始化firstedge域为NULL。

3、添加边:
遍历无向图中的每一条边,为每条边创建一个边表节点,并设置其ivex、jvex(以及可能的info)域。然后,将该节点分别插入到顶点ivex和jvex的边链表中,即更新相应顶点的firstedge域以及边表节点的ilink和jlink域。

四、应用场景

邻接多重表特别适用于需要频繁操作边的无向图问题,如边的删除、查找、标记等。在这些场景中,邻接多重表能够提供比邻接表更高效的操作性能,因为它避免了同一条边在邻接表中需要存储两次的问题。

此外,邻接多重表还广泛应用于图论及其相关领域的算法中,如图的遍历、最短路径计算、拓扑排序等。这些算法在利用邻接多重表作为图的存储结构时,能够更加方便地实现算法逻辑,提高算法的执行效率。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

DKPT

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

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

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

打赏作者

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

抵扣说明:

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

余额充值