图的广度遍历(基于临街图)

大家好,昨天更新的是图的深度遍历,今天就更新图的广度遍历把!!



我们继续在昨天的的代码基础上加上下面这些东西:



加一个头文件(我们用队列的方法来实现)

#include <queue>



然后加上一个函数:

void BFS( ALGraph G )
{
 int k;
 for( int v=0; v<G.vecNum; v++ )
 {
  visited[v]=0;
 }
 queue<int> q;
 for( int i=0; i<G.vecNum; i++ )
 {
  if( !visited[i] )
  {
   visited[i]=1;
   cout<<G.vertices[i].data;
   q.push(i);
   while( q.front() != q.back() )
   {
    q.pop();
    for( int w=FirstAdjVertux(G,q.size());    w>=0;  w=NextAdjVertex(G, q.size(),w)   )
    {
     if( !visited[w] )
     {
      visited[w]=1;
      cout<<G.vertices[w].data;
      q.push(w);
     }
    }
   }
  }
 }

}



在主程序中调用这个函数就行了!!
    原文作者:数据结构之图
    原文地址: https://blog.csdn.net/MFCdestoryer/article/details/7096020
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞