大家好,昨天更新的是图的深度遍历,今天就更新图的广度遍历把!!
我们继续在昨天的的代码基础上加上下面这些东西:
加一个头文件(我们用队列的方法来实现)
#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);
}
}
}
}
}
}
在主程序中调用这个函数就行了!!