
十字链表与邻接多重表
本篇记录了我对《大话数据结构》一书中,对图的十字链表储存结构的理解,顺带浅谈一下边集数组
十字链表
十字链表是 有向邻接表 和 有向逆邻接表 的结合
把两个表压缩进了一个表
邻接多重表
邻接多重表是 无向邻接表(无向邻接表 = 存储意义不同但结构相同的有向邻接表)的压缩版本
无向邻接表中每一条边都被记录了两次,而邻接多重表里每个边只记录了一次
边集数组
边集数组其实和我在上文解释十字链表和邻接多重表的时候框出来的两个域有异曲同工之妙
只不过我框出来的域在实际储存结构中是不存在的,只是为了方便理解,在图里框出来的
而边集数组则是在实际储存结构中,用一整个二维数组来代替那一堆分散的链表
使用边集数组的好处是结构清晰,但也有查询度时需要遍历整个数组的缺点
或许可以结合一下?↓
举个例子:求0的出度
①先遍历找到第一个[begin]为0的边
②去[同[begin]的下一条边]里找下一条边
③当[同[begin]的下一条边]为空时,查找结束