24、图的存储(上):邻接矩阵、邻接表和十字链表有什么不同

你好,我是王健伟。 对于图这个话题,我们要解决的第一个问题是要把图存储起来,也就是图的存储结构问题。 首先要说的是,对于图来讲,顶点位置是个相对概念,任何一个顶点都可以看成第一个顶点,这个点的邻接点之间也不存在次序关系。所以对于图的存储是需要一些特殊...

快速上手C++数据结构与算法

25、图的存储(下):为什么我们还需要邻接多重表和边集数组

你好,我是王健伟。 上节课我们讲解了用邻接矩阵、邻接表、十字链表进行图的存储,他们都有各自的优点、局限性和所适用的场景。这节课,我就带你学习另外两种图的存储结构,分别是邻接多重表和边集数组。 邻接多重表邻接多重表是存储无向图的另一种链式存储结构。换句...

快速上手C++数据结构与算法

26、图:深度优先遍历(DFS)与广度优先遍历(BFS)

你好,我是王健伟。 上节课我们讲述了邻接矩阵、邻接表、十字链表、邻接多重表、边集数组共5种数据结构,解决了对图进行存储的问题。接下来的问题, 就是对图进行遍历了。 所谓图的遍历,就是指从图中任意一个顶点出发访遍图中其余顶点,且使每个顶点都被访问且只被...

快速上手C++数据结构与算法

27、最小生成树:如何用普里姆(Prim)算法解决修路费用最少的问题

你好,我是王健伟。 前面我们已经讲解了图的概念、图的存储结构以及图的遍历问题。那么你可能非常想知道图都有哪些具体的实际用途。这节课,我就和你分享图的第一个实际用途——最小生成树。 首先我们先一起看一看什么是最小生成树。 最小生成树前面我们曾经展示过生...

快速上手C++数据结构与算法

28、最小生成树:克鲁斯卡尔(Kruskal)算法与修路费用最少的问题

你好,我是王健伟。 上节课我带你实现了用普里姆算法寻找一个无向连通图的最小生成树,并且我们已经知道,普里姆算法比较适合顶点数比较少,边数比较多的图。 这节课我带你看一看另外一种寻找无向连通图最小生成树的方法——克鲁斯卡尔(Kruskal)算法。话不多...

快速上手C++数据结构与算法

29、最短路径:迪杰斯特拉(Dijkstra)算法与选择最节省时间的行走路线问题

你好,我是王健伟。 前面我们讲解了用普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法来寻找连通图的最小生成树,从而解决诸如如何修路费用最少这样的问题。这次我和你分享图的第二个实际用途——最短路径。那么,什么是最短路径呢? 最短路径在带权图中,...

快速上手C++数据结构与算法
13456710