由于用邻接矩阵存储稀疏图会造成大量空间浪费。
而本节课我们所学的邻接表是采用顺序存储加上链式存储的方式。
arcnum指的是弧的数量
对比:树的孩子表示法(相同的实现方式)
Compare:
6.2.3十字链表,邻接多重表
定义这样两个结构体。
有七条弧,创造了七个弧结点struct。
我们看一个D指向其余三个顶点。
弧尾都是3,弧头是0,1,2。
这两条弧弧头相同。弧头都是B.
十字链表法性能分析:
十字链表法的空间复杂度和邻接表完全相同
十字链表法只用于存储有向图
如果用邻接矩阵和邻接表存储无向图会出现以下问题:
假如删除一条边就需要就要删除两份信息/删除一个顶点就需要将对应的边删除。
所以我们使用邻接多重表去存储无向图:
与之前的十字链表相似
D的iLink指向NULL。
想要找到与某个结点相连的边非常方便,每条边只对应一个结构体。
假如删除一条边:
假如删除一个顶点: