什么是十字链表:
十字链表(Orthogonal List)
是有向图的另一种链式存储结构。该结构可以看成是将有向图的邻接表和逆邻接表结合起来得到的。用十字链表来存储有向图,可以达到高效的存取效果。同时,代码的可读性也会得到提升。
了解十字链表:
我们来看下面这两副图
由上图我们不难看出,十字链表一共有两个结构体:
其中一个储存节点,用指针数组的方式存储。这个结构体中由三个部分组成,如:数组中第一个元素:A表示存储的节点,head表示A连着的,tail表示连着A的。A的head所连着的结构体永远只会调用head去连接下一个结构体,而A的tail所连着的结构体也只会调用tail去继续连接结构体
还有一个是两个节点之间的关系,用链的方式将他们连接。这个结构体由五个部分组成:如A的head连着的第一个结构体(A连着B位权为40),其中前两个储存A和B节点在数组中的下标。第三个表示位权40。第四个表示连着B的,第五个则表示A连着的。在这个结构体中,只有两个节点,也只会出现第二个元素所代表的节点被谁连着,第一个元素所代表的节点连着谁这唯一情况。所以tail只会被第二个元素所使用,head只会被第一个元素使用。而这两个指针