数据结构 - 图的深度优先遍历(C++)
2014-02-25 13:26
281 查看
Boolean visited[MAX_VERTEX_NUM]; //访问标志数组。 Status (*VisitFunc)(int v); //VisitFunc是访问函数,对图的每个顶点调用该函数。 void DFSTraverse (Graph G, Status(*Visit)(int v)) //图的深度优先遍历。 { VisitFunc = Visit; for(v=0; v<G.vexnum; ++v) visited[v] = FALSE; //访问标志数组初始化。 for(v=0; v<G.vexnum; ++v) if(!visited[v]) DFS(G, v); //对尚未访问的顶点调用DFS。 } void DFS(Graph G, int v) //从第v个顶点出发递归地深度优先遍历图G。 { visited[v]=TRUE; VisitFunc(v); //访问第v个顶点。 for(w=FirstAdjVex(G,v); w>=0; w=NextAdjVex(G,v,w)) //FirstAdjVex返回v的第一个邻接顶点,若顶点在G中没有邻接顶点,则返回空(0)。 //若w是v的邻接顶点,NextAdjVex返回v的(相对于w的)下一个邻接顶点。 //若w是v的最后一个邻接点,则返回空(0)。 if(!visited[w]) DFS(G, w); //对v的尚未访问的邻接顶点w调用DFS。 }
相关文章推荐
- 关于指针的一些事情
- 文件遍历排序函数
- 渗透技术一瞥(图)
- 图片引发的溢出危机(图)
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构揭秘一
- C/C++数据对齐详细解析
- C++中引用的使用总结
- C与C++之间相互调用实例方法讲解
- C++中引用(&)的用法与应用实例分析
- 解析C++ 浮点数的格式化输出
- 深入分析C++中几个最不常用的关键字
- c++中inline的用法分析
- 深入解析C++ Data Member内存布局
- 从汇编看c++中默认构造函数的使用分析
- 关于C++中的友元函数的一些总结
- C++的sstream标准库详细介绍
- 基于C++自动化编译工具的使用详解
- 浅谈C++中的string 类型占几个字节
- C/C++ 宏详细解析