与博客中的深度优先对照起来看,此处不再赘述。
void bfs(int begin)
{
int head = 0;//数组的起始位置
int tail = 0;//数组的起始位置
int i;
int cur;
que[tail] = begin;//起始点先加入队列,加入对尾
tail++;
book[begin] = 1;
while( head < tail && tail < n)
{
cur = que[head];
for(i=0;i<n;i++)
{
if(graph[cur][i] == 1 && book[i] == 0)
{
que[tail] = i;
tail++;
book[i] = 1;
}
if(tail >= n)
{
break;
}
}
head++;
}
for(i=0;i<tail;i++)
{
printf("%d ",que[i]);
}
}
Please input n lines and columns and m links to build a matrix!
5
5
Set linked line between nodes!
0
1
Set linked line between nodes!
0
2
Set linked line between nodes!
0
4
Set linked line between nodes!
1
3
Set linked line between nodes!
2
4
0 1 2 4 3
Press any key to continue
本文详细介绍了宽度优先搜索(BFS)算法的具体实现过程,并通过一个具体的实例来展示如何使用该算法进行图的遍历。从起始节点开始,依次访问与其相邻且未被访问过的节点,将这些节点加入队列并标记为已访问,直至所有可达节点都被访问。通过这个过程,读者可以了解BFS的基本原理及应用。
505

被折叠的 条评论
为什么被折叠?



