考研天勤 数据结构 图(自用回顾)

本文详细介绍了图的两种特殊存储结构——十字表和邻接多重表,并探讨了生成树算法(Prim和Kruskal)、最短路径(迪杰斯特拉和Floyd)、图的遍历(DFS和BFS)、拓扑排序及其应用,以及图的环判断和连通性检测。内容涵盖了数据结构和算法在图论中的重要概念。
摘要由CSDN通过智能技术生成

两种特殊的存储结构十字表与邻接多重表

顶点存数据和第一个边的指针,边存练连的顶点和两个端点的兄弟边(即下一条边)

十字表(有向图)

节点和边分开存
顶点:数据 第一个入边指针 第一个出边指针
边:尾点 头点 同头兄弟边指针 同尾兄弟边指针 边的信息

邻接多重表(无向图)

节点和边分开存
节点:数据 第一个边
边:Mark标记 i节点 i连的边 j节点 j连的边 边的信息

生成树算法

Prim算法(选点)


初始化:vis数组与dist数组,初始化的时候已经放入了第一个点,所以第一层循环是进行n-1次循环,如果发现选出的点的距离是无穷大则说明此连通分量已经找完,跳出算法(本代码没有实现)

Kruskal算法(选边)

每次从图中选出一个最小的边放进生成树中,加入时不能让生成树成为环,用并查集的方式,如果要加入的边的两个顶点有共同的祖先,则不加入此边,若边符合条件,则加入后应进行并查集合并,合并公共祖先。
初始化:因为每个边的长度不会再改变ÿ

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值