首页 > 代码库 > 广度优先(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;}
//使用数组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++]=扩展出的结点值; } }}
//使用数组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 (可以扩展) { 处理每种可能情况; 扩展出结点入队列; } }}
//使用STL中的队列
void BFS( )
{ 首结点入队列Q;
while ( ! Q.empty() ) //队列不空
{ temp=Q.front();
if ( 到达目的状态 ) { 输出结果; break; }
Q.pop( );
for (i=1; i<=m; i++) //扩展结点temp的m种可能
if (可以扩展)
{ 处理每种可能情况;
扩展出结点入队列;
}
}
}