对于有向图来说,邻接表是有缺陷的。关心了出度问题,想要了解入度情况就必须要遍历整个图才能知道。反之也一样。那么,这一节就介绍有向图的一种存储方法,它能将邻接表和逆邻接表结合起来 —— 十字链表。
十字链表存储结构
定义顶点表结点结构:
其中,firstIn表示入边表头指针,指向该顶点的入边表中第一个结点,firstOut表示出边表头指针,指向该顶点的出边表中的第一个结点。
定义边表结点结构:
其中,tailvex是指弧起点在顶点表的下标,headvex是弧终点在顶点表的下标,headlink是指入边表指针域,指向终点相同的下一条边,tailvex是指边表指针域,指向起点相同的下一条边。
代码实现
1 | /* |
输出结果:
1 | AdjList: |