码迷,mamicode.com
首页 > 编程语言 > 详细

DFS BFS 示例 以及BFS部分算法代码

时间:2015-02-07 17:29:05      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:

上一篇写了DFS的邻接矩阵和邻接表的,这篇再写一下BFS的

先大概讲一下BFS , 全名广度优先搜索,没有回溯和探查,逐层遍历,采用队列实现

先访问当前顶点v, 然后访问v的各个未被访问过的邻接顶点,然后在一次访问v的各个邻接顶点的未被访问的邻接顶点技术分享

代码实现如下 :

void BFS (Graph &G , int v ) {
	int i , w , n = G.Number(); //取出顶点个数
	bool * visit = new bool [n] ;
	for( i =0 ;i< n ; i++) {
		visit[i] =false ;

	int loc = G.getVertexPos(v) ;
	cout << G.getValue(loc) <<endl ;
	visit[loc] = true ;//第一个顶点访问过了
	Queue Q ;
	Q.EnQueue(loc) ;//进队列
	while (! Q.IsEmpty()) {
		Q.DeQueue(loc) ;
		w = G.getFirstNeig(loc) ;
		while (w != -1) {
			if(visit[w] ==false) {
				cout << G.getValue(w) <<"" ;
				visit[w] = true ;
				Q.EnQueue (w) ;
				
}  
				w = G.getNextNeig(loc , w ) ;

}
}
			delete []visit ;
} 
}

代码是在文本上写得,可能不是很规范,大概跟书上是一样的,书名是:数据结构(用面向对象方法与C++语言描述)

DFS BFS 示例 以及BFS部分算法代码

标签:

原文地址:http://blog.csdn.net/hhooong/article/details/43604567

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!