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

上一篇写了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部分算法代码

相关文章:

你感兴趣的文章:

标签云: