求一个用c++编写的广度优先搜索的简单例子
来源:百度知道 编辑:UC知道 时间:2024/05/17 22:16:05
给个10节点邻接表例子吧
节点1:---2
节点2:---3,4
节点3:---6,5
节点4:---10
节点6:---9,8,7
节点5,10,9,8,7为末梢节点,没有邻接点
非原创~转的:
#include <stdio.h>
#include <string.h>
#define max 500
int map[max][max]; /*标记两个顶点是否相邻, 是则1, 否则0*/
int visited[max]; /*标记节点是否访问,是则1, 否则0*/
int bfs (int v, int n)
{
int j, k, maxsize, front, rear;
int queue[max]; /*把与顶点相邻, 没有访问的节点入队*/
maxsize = max;
front = rear = 0;
visited[v] = 1;
printf ("%d ", v);
queue[++ rear] = v;
while (front != rear) {
front = (front + 1) % maxsize;
k = queue[front];
for (j = 1; j <= n; j ++) {
if (map[k][j] && !visited[j] ) {
printf ("%d ", j);
visited[j] = 1;
rear = (rear + 1) % maxsize;
queue[rear] = j;
}
}
}
return 0;
}
int main ()
{
int i, n, data;
scanf ("%d", &n); /*输入节点数*/
memset (map , 0, sizeof (map));
memset (visited, 0, sizeof(visited));
for (i = 1; i <= n; i ++)