十字链表的构造

基本概念

十字链表(Orthogonal List)是有向图的另一种链式存储结构。该结构可以看成是将有向图的邻接表和逆邻接表结合起来得到的。
邻接表固然优秀,但也有不足的地方,比如对有向图的处理的时候,有时需要建立逆邻接表。
十字链表将邻接表和逆邻接表整合在一起。
十字链表虽然结构复杂,但其创建图的时间复杂度和邻接表是相同的。

结构分析


入弧和出弧:入弧表示图中发出箭头的顶点,出弧表示箭头指向的顶点。
弧头和弧尾:弧尾表示图中发出箭头的顶点,弧头表示箭头指向的顶点。
同弧头和同弧尾:同弧头,弧头相同弧尾不同;同弧尾,弧头不同弧尾相同

步骤

下面分享一下构造十字链表的方法。
以这个图为例在这里插入图片描述
1、画出各表头结点并编号,根据图片可以看出该图有4个顶点,所以我们画出4个表头结点
在这里插入图片描述

2、为画相邻结点做辅助
为了方便画线,我们把同弧尾的邻结点画在一行,把同弧头的画在一列
为了清晰看出哪些应该放在同一列,我们在上面依次标出以该结点为弧头的结点号作为参考
在这里插入图片描述
上面那一行编号只是帮助初学者理解,答题时不要写,在脑子里记住对应位置就行。
3、画邻结点
先看以表头结点为弧尾的
根据有向图可以看出
以v1为弧尾的有 v2 、v3
以v2为弧尾没有
以v3为弧尾的有 v2
以v4为弧尾的有 v1
在看以表结点为弧头的
以v1为弧头的有v4
以v2为弧头的有v1、v3
以v3为弧头的有v1
以v4为弧头的没有
画出下表可以看出
第0列都是以0为弧头的
第0行都是以0为弧尾的
为了方便画线把它们按照标号放在相应位置
在这里插入图片描述

4、连线
先连同弧尾的即从弧尾域射出连接到下一个同弧尾结点直到最后没有填入^
在这里插入图片描述

连同弧头的也是类似
从表头结点的入弧域出发射出线连接到以该表头结点为弧头的结点,没有的话就填空。
在这里插入图片描述

\color{red}{不足之处还望指点}
么么哒。

发布了14 篇原创文章 · 获赞 8 · 访问量 6138

猜你喜欢

转载自blog.csdn.net/KangTongShun/article/details/102768993