基于邻接表与邻接矩阵的无向图DFS与BFS遍历实现
基于邻接表的无向图遍历实现,适合图不太密的时候用,结构清晰,代码也不复杂。DFS 用递归或者栈就行,路径一路走到底,回头再补。BFS 就像一层层扫,队列搞定,响应也快。你可以自己指定起点,输出访问序列和生成树边集,用的还是教科书上经典的图 7.13(a)。
邻接矩阵也支持,适合边多的图,判断有没有边挺方便的。DFS 和 BFS 在它上面跑,复杂度都还是O(n+m)
,跑起来也不算慢。用CreateGraph
创建图结构,跑 DFS、BFS 两个函数直接出结果。
每个节点用VNode
表示,边用ArcNode
链起来,图结构是ALGraph
。跑一遍 DFS,能看到怎么深入回溯;BFS 走一遍,就知道图怎么一层层展开。
如果你平时爱研究图结构的遍历算法,这套代码你可以直接用。测试图用教科书图,也方便你对照调试。想改成自己的图也简单,改下输入就行。
下面这些资源还挺有的,懒得自己写代码的话可以直接拿来用:
- 广度优先搜索邻接表邻接矩阵
- 深度广度优先遍历
- 邻接矩阵表示遍历实现
- 类模板无向图的遍历
- C++邻接矩阵的深度广度遍历
- 图-广度优先算法--邻接表实现
- 广度优先遍历邻接表.cpp
- C++邻接矩阵的 BFS
如果你刚好在复习图算法,又不想手敲邻接表结构,那你可以直接参考上面的链接,改改就能跑。
下载地址
用户评论