十字链表与邻接多重表的画法
文章目录
- 前言
- 一、十字链表
- 1.画邻接表
- 2.增加弧节点的域
- 3.自己指向自己
- 二、邻接多重表
- 1.画顶点
- 2.画边
- 3.自己指向自己
前言
近期一直在构建算法技能树的数据,借此机会,重新把数据结构与算法又温习了一遍,在看到十字链表与邻接多重表的画法时,十分的不理解,在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.画顶点
上面的无向图告诉我们它有四个顶点和五条边,所以,我们我们先将四个顶点和五条边的边表结构画出来,由于是无向图,所以ivex
和jvex
的顺序是可以互换的。
2.画边
3.自己指向自己
首先,我们从v0开始,v0的下标是0,将所有与v0有关的边连接起来。
其中,最后一个矩形,0
和2
之间的^
表示空,因为再往下找没有与v0有关的边了,所以填入空
再连接所有与v1有关的边
接着是v2,v3
至此,上图就是例子中无向图的邻接多重表
最后,看完这篇文章还没懂的话可以点击一下链接观看视频:
1.十字链表画法
2.邻接多重表
十字链表与邻接多重表的画法相关推荐
- 图的链式存储结构解析(邻接表、逆邻接表、十字链表、邻接多重表)
图的矩阵表示法比较消耗空间,需要花费$ n 2 n^2 n2$个单元存储边(弧).在边数较少的情况下比较浪费.我们这里来讨论图的链式存储结构. 图的链式结构主要有四类:邻接表.逆邻接表.十字链表.邻接 ...
- 构建复杂网络的几种方法(邻接矩阵,邻接表,十字链表,邻接多重表)
目录 1. 数据结构 线性结构 非线性结构 2. 复杂网络的数组表示 3. 复杂网络的邻接表表示 4. 邻接矩阵与邻接表的比较 5. 复杂网络的其他表示方法 逆邻接表 十字链表 邻接多重表 前向星 链 ...
- 【数据结构】图的存储结构(邻接矩阵、邻接表、十字链表、邻接多重表)及实现(C语言)
目录 1. 邻接矩阵表示法 1.1 图的邻接矩阵 1.2 创建有向网的邻接矩阵 2. 邻接表表示法 2.1 图的邻接表存储结构 2.2 创建有向图的邻接表 3. 十字链表表示法 3.1 图的十字链表存 ...
- 7.2图的存储结构(十字链表、邻接多重表、边集数组)
思路: 有没有可能把邻接表和逆邻接表结合起来. 所以就产生了十字链表(Orthogonal List) 为此我们重新定义顶点表结点结构: data firstIn firstOut firstIn:第 ...
- (王道408考研数据结构)第六章图-第二节1:图的存储结构(邻接矩阵、邻接表、十字链表和邻接多重表)
文章目录 一:邻接矩阵--适合存储稠密图 (1)邻接矩阵定义 (2)代码 二:邻接表 (1)邻接表定义 (2)代码 (3)邻接表和邻接矩阵对比 三:十字链表(用于有向图) 四:邻接多重表(用于优化无向 ...
- 十字链表、邻接多重表
邻接矩阵.邻接表存储有向图 十字链表存储有向图 十字链表是有向图的一种链式存储结构.在十字链表中,对应于有向图中的每条弧有一个结点,对应于每个顶点也有一个结点. 弧结点中有5个域:尾域(tailvex ...
- 图的存储__十字链表法和邻接多重表法
文章目录 一.十字链表法 概念 性能分析: 二.邻接多重表法 概念 复杂度分析 总结 一.十字链表法 概念 1.十字链表法只能存储有向图. 2.每个表中有一个顶点数组,每个顶点用两个指针,其中橙色指针 ...
- 59十字链表,邻接多重表,边集数组,佛洛依德的冰山理论
- 数据结构考研笔记(十五)——图的存储结构邻接矩阵、邻接表、十字链表、临界多重表的概念
图的存储结构 1.邻接矩阵 1.1有向图 1.2无向图 2.邻接表法 2.1有向图边表 2.2无向图边表 3.十字链表 4.临界多重表 十字链表与临界多重表 1.邻接矩阵 邻接矩阵法结点数为n的图G ...
最新文章
- 如何成为顶尖管理者?
- Spring Singleton,请求,会话Bean和线程安全
- STL3-MyArray动态数组类模板实现
- 在arxiv上看到自己的投稿署了别人的名字是什么体验?
- factorymenu什么意思_宏基20lsquo;显示屏AUTO和MENU是什么意思,在什么位置_已解决 - 阿里巴巴生意经...
- 高等数学复习笔记(二)- 一元函数微分学的概念、计算以及几何应用
- easyui省市二级联动
- 小米路由pro php,完全拆解小米路由器Pro:无接口,预加硬盘无望
- CSS颜色代码对照表
- LumaQQ.NET For Visual Studio 2005 代码下载
- Gflags开源库使用--解析命令行参数
- csr驱动程序linux版,CSR8510蓝牙驱动下载
- 网站备案其实是服务器备案,网站备案指的是备案域名还是备案主机空间
- 求两个数的最大公约数(C++)
- 资深项目经理推荐的几款免费/开源项目管理工具
- Excel 透视图数据源无效的问题(PivotTable Data Source Not Valid)
- 7.3 有源滤波电路(1)
- js -- 打开新窗口(window.open)、关闭窗口(window.close)
- 史上最全Apidoc文档生成详解
- 穷人翻身远不是钱的事
热门文章
- cf登录游戏只显示服务器的字体,cf辅助灭天大神修复文件字体花样请求解决方法...
- 开心网存在重大安全隐患
- slf4j log4j logback关系详解和相关用法 【by Sinte-Beuve】
- java项目如何分工合作,JavaWeb基础 jsp+servlet分工合作的简单示例
- Clipper2中的术语和基本概念
- 如何快速通过对方微信好友验证!
- A - Heavy Transportation POJ - 1797
- Java ZIP压缩输入输出流
- 计算机是如何执行程序的
- mysql_check_MySQL中check的用法