数据结构基础温故-5.图(中):图的遍历算法
2015-07-27 00:50
337 查看
上一篇我们了解了图的基本概念、术语以及存储结构,还对邻接表结构进行了模拟实现。本篇我们来了解一下图的遍历,和树的遍历类似,从图的某一顶点出发访问图中其余顶点,并且使每一个顶点仅被访问一次,这一过程就叫做图的遍历(Traversing Graph)。如果只访问图的顶点而不关注边的信息,那么图的遍历十分简单,使用一个foreach语句遍历存放顶点信息的数组即可。但是,如果为了实现特定算法,就必须要根据边的信息按照一定的顺序进行遍历。图的遍历算法是求解图的连通性问题、拓扑排序和求解关键路径等算法的基础。
View Code
运行结果如下图所示:
(2)陈广,《数据结构(C#语言描述)》
(3)段恩泽,《数据结构(C#语言版)》
作者:周旭龙
出处:http://edisonchou.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
一、图的遍历
static void MyAdjacencyListTraverseTest() { Console.WriteLine("------------非连通图的遍历------------"); MyAdjacencyList<string> numAdjList = new MyAdjacencyList<string>(); // 添加顶点 numAdjList.AddVertex("V1"); numAdjList.AddVertex("V2"); numAdjList.AddVertex("V3"); numAdjList.AddVertex("V4"); numAdjList.AddVertex("V5"); numAdjList.AddVertex("V6"); numAdjList.AddVertex("V7"); numAdjList.AddVertex("V8"); // 添加边 numAdjList.AddEdge("V1", "V2"); numAdjList.AddEdge("V1", "V4"); numAdjList.AddEdge("V2", "V3"); numAdjList.AddEdge("V2", "V5"); numAdjList.AddEdge("V4", "V5"); numAdjList.AddEdge("V6", "V7"); numAdjList.AddEdge("V6", "V8"); Console.Write("深度优先遍历:"); // DFS遍历 numAdjList.DFSTraverse4NUG(); Console.WriteLine(); Console.Write("广度优先遍历:"); // BFS遍历 numAdjList.BFSTraverse4NUG(); }
View Code
运行结果如下图所示:
附件下载
本篇实现的图的遍历算法:code.datastructure.graph参考资料
(1)程杰,《大话数据结构》(2)陈广,《数据结构(C#语言描述)》
(3)段恩泽,《数据结构(C#语言版)》
作者:周旭龙
出处:http://edisonchou.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
相关文章推荐
- 数据结构(二):线性表的使用原则以及链表的应用-稀疏矩阵的三元组表示
- 数据结构-两栈共享空间
- 数据结构-栈的链式存储结构
- 数据结构-队列顺序结构的实现和操作
- 数据结构-队列的链式存储实现操作
- 数据结构图小结
- 数据结构之选择排序--简单选择排序
- 找到单项链表中间那个元素,如果有两个则取前面一个
- 【数据结构】2、汉诺塔
- 课程笔记 14:数据结构(清华) 二叉树-遍历
- 【数据结构】1、串的模式匹配算法
- 算法和数据结构
- 数据结构:图 (总结)
- java数据结构------二叉树
- 数据结构和算法(Java版本)
- 数据结构——HDU1312:Red and Black(DFS)
- 课程笔记 13:数据结构(清华) 二叉树
- Python学习日志之Python数据结构初识
- Python学习日志之Python数据结构初识
- Python学习日志之Python数据结构初识