首页 > 代码库 > 广度优先(BFS) ------- 模板1:-----模板2:--------模板3:

广度优先(BFS) ------- 模板1:-----模板2:--------模板3:

//使用数组queue[ ]存放结点队列void   BFS( ) {   head=0; tail=1;  queue[head]=首结点的值;     while (head<tail) //队列不空     {    temp=tail;          for (k=head; k<=tail; k++)  //对当前层扩展          {      if  ( 到达目的状态 )    {      输出结果;   return;   }                 for (i=1; i<=m; i++) //每个结点的m种扩展可能                      if (可以扩展)                       {      处理每种可能情况;                               queue[temp++]=扩展出的结点值;                      }          }         head=tail;   tail=temp;}
View Code

//使用数组queue[ ]存放结点队列
void   BFS( )
{   head=0; tail=1;  queue[head]=首结点的值;
     while (head<tail) //队列不空
     {    temp=tail;
          for (k=head; k<=tail; k++)  //对当前层扩展
          {      if  ( 到达目的状态 )    {      输出结果;   return;   }
                 for (i=1; i<=m; i++) //每个结点的m种扩展可能
                      if (可以扩展)
                      {      处理每种可能情况;
                              queue[temp++]=扩展出的结点值;
                      }
         }
         head=tail;   tail=temp;
}

 

 

 

 

 

 

//使用数组queue[ ]存放结点队列void   BFS( ) {    head=0; tail=1;       queue[head]=首结点的值;     while (head<tail)   //队列不空     {     if  ( 到达目的状态 )    {      输出结果;   break;   }            head++;           for (i=1; i<=m; i++) //结点head的m种扩展可能                      if (可以扩展)                       {      处理每种可能情况;                               queue[tail++]=扩展出的结点值;                      }          }}
View Code

 

//使用数组queue[ ]存放结点队列
void   BFS( )
{    head=0; tail=1; 
     queue[head]=首结点的值;
     while (head<tail)   //队列不空
     {     if  ( 到达目的状态 )    {      输出结果;   break;   }
            head++;
           for (i=1; i<=m; i++) //结点head的m种扩展可能
                      if (可以扩展)
                      {      处理每种可能情况;
                              queue[tail++]=扩展出的结点值;
                      }
         }
}

 

 

 

//使用STL中的队列void   BFS( ) {   首结点入队列Q;     while ( ! Q.empty() ) //队列不空     {    temp=Q.front();              if  ( 到达目的状态 )     {      输出结果;   break;   }           Q.pop( );            for (i=1; i<=m; i++) //扩展结点temp的m种可能                  if (可以扩展)                   {      处理每种可能情况;                          扩展出结点入队列;                  }          }}
View Code

 

//使用STL中的队列
void   BFS( )
{   首结点入队列Q;
     while ( ! Q.empty() ) //队列不空
     {    temp=Q.front();   
          if  ( 到达目的状态 )     {      输出结果;   break;   }
          Q.pop( ); 
          for (i=1; i<=m; i++) //扩展结点temp的m种可能
                  if (可以扩展)
                  {      处理每种可能情况;
                         扩展出结点入队列;
                  }
         }
}