void BFS(int start) { int queue[MAX]; int front = 0; int rear = 0; queue[rear++] = start; visited[start] = 1; while (front < rear) { int cur = queue[front++]; printf("%d ", cur); for (int i = 0; i < n; i++) { if (Graph[cur][i] && !visited[i]) { queue[rear++] = i; visited[i] = 1; } } } }
时间: 2024-01-21 07:04:31 浏览: 147
Queue_ex1.zip_zip
这是BFS函数的具体实现。参数start表示起始顶点,queue是队列,visited是标记数组,用来记录每个顶点是否已经被访问过。MAX表示队列的最大长度,可以根据需要进行调整。
该函数首先将起始顶点入队,并将其标记为已访问。然后进入while循环,只要队列不为空就一直循环,每次取出队首元素,并输出该元素。然后遍历该元素的所有邻接点,如果该邻接点没有被访问过,则将其入队并标记为已访问。
需要注意的是,该代码中没有对队列是否已满进行判断,如果队列已满,则可能会导致程序崩溃。另外,该代码中没有对图是否连通进行判断,如果图不连通,则需要对所有未访问的顶点进行遍历。
阅读全文