十字链表与邻接多重表的画法

本文通过实例详细解析了十字链表和邻接多重表的构建过程,包括顶点节点、弧节点的定义,以及如何从邻接表转换为十字链表和邻接多重表。通过图文并茂的方式阐述了每个步骤,帮助读者理解这两种数据结构的表示方法。文章末尾还提供了进一步学习的视频资源。
摘要由CSDN通过智能技术生成


前言

近期一直在构建算法技能树的数据,借此机会,重新把数据结构与算法又温习了一遍,在看到十字链表与邻接多重表的画法时,十分的不理解,在C站找资料时,发现也看不懂,于是上B站,终于明白了十字链表与多重邻接表的画法。

一、十字链表

我们以下面的有向图为例来进行讲解

在这里插入图片描述
首先我们有几个定义要搞清楚:

如果:
在这里插入图片描述
则我们称V0是弧尾, v3是弧头

反之,如果:
在这里插入图片描述
则我们称v1是弧尾,v0是弧头。

顶点节点

在这里插入图片描述
firstin: 入边表头指针,指向该顶点的入边表中第一个节点
firstout: 出边表头指针,指向该顶点的出边表中第一个节点

弧节点

在这里插入图片描述
tailvex: 弧的尾节点
headvex: 弧的头节点

headlink: 指向和这条弧有相同头节点的点;同头
taillink: 指向和这条弧有相同尾节点的点; 同尾

用下面的图表示:

弧节点

在这里插入图片描述
以上重要概念都清楚后,下面我们开始画十字链表。

总的来说,分为三步:

1.画邻接表

在这里插入图片描述
接着,进入第二步

2.增加弧节点的域

我们将上图换成十字链表的格式
请添加图片描述
我们将其补齐,如下图:
请添加图片描述
然后,我们把这四个顶点标到图上去,如下:
请添加图片描述
接着,进入第三步

3.自己指向自己

第二步完成后,我们的图变成了现在这个样子:
请添加图片描述
接下来,我们就开始自己指自己的过程
从v0开始,将图中v0相连
请添加图片描述
接着v1,将图中所有v1相连
请添加图片描述
接着v2,v3,最终的结果如下:

请添加图片描述
至此,上图就是例子中有向图的十字链表。

二、邻接多重表

我们以下面的无向图为例
在这里插入图片描述

边表节点结构

在这里插入图片描述

ivex、jvex: 与某条边依附的两个顶点在顶点表中的下标

ilink: 指向依附顶点ivex的下一条边
jlink: 指向依附顶点jvex的下一条边

1.画顶点

上面的无向图告诉我们它有四个顶点和五条边,所以,我们我们先将四个顶点和五条边的边表结构画出来,由于是无向图,所以ivexjvex的顺序是可以互换的。

在这里插入图片描述

2.画边

在这里插入图片描述

3.自己指向自己

首先,我们从v0开始,v0的下标是0,将所有与v0有关的边连接起来。
其中,最后一个矩形,02之间的^表示空,因为再往下找没有与v0有关的边了,所以填入空
在这里插入图片描述
再连接所有与v1有关的边
在这里插入图片描述
接着是v2,v3
在这里插入图片描述
至此,上图就是例子中无向图的邻接多重表

最后,看完这篇文章还没懂的话可以点击一下链接观看视频:

1.十字链表画法
2.邻接多重表

  • 43
    点赞
  • 192
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
引用: 十字链表是一种用于表示有向图的数据结构。它包含两种类型的节点:顶点节点和弧节点。顶点节点记录着当前顶点的相关信息,如顶点的数据、指向该顶点的入度弧节点和指出该顶点的出度弧节点。而弧节点则表示两个顶点之间的有向边关系,其中tailvex表示弧的起始顶点,headvex表示弧的结束顶点,而headlink和taillink分别指向与该节点相邻的下一条弧的节点。 引用: 邻接多重表也是一种用于表示无向图的数据结构。它与十字链表相似,同样包含顶点节点和边节点。每个顶点节点记录着当前顶点的相关信息,如顶点的数据以及与该顶点相邻的一条边的节点。而边节点则表示两个顶点之间的无向边关系,其中ivex和jvex分别表示边的两个顶点,ilink和jlink分别指向与该边相邻的下一条边的节点。需要注意的是,邻接多重表中的边是双向的,因此在图的存储中每条边都需要用两个边节点表示。 所以,十字链表是用于表示有向图的数据结构,而邻接多重表则用于表示无向图的数据结构。它们分别在记录顶点和边之间的关系上有所不同。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [6-4图-十字链表邻接多重表](https://blog.csdn.net/weixin_45825865/article/details/116152711)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ToTensor

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

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

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

打赏作者

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

抵扣说明:

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

余额充值