bfs
作者:互联网
实现如图(邻接矩阵)的BFS
void BFStraverse(MGraph G) { int i, j; SqQueue Q; //辅助队列 for (i = 0; i < G.numVertexes; i++) visited[i] = 0; //初始化都为0 InitQueue(&Q); //初始化辅助队列 for (i = 0; i < G.numVertexes; i++) //对每一个点做循环 { if (!visited[i]) //若没有被访问 { visited[i] = 1; //将当前结点设置为已访问 printf("%c", G.verx[i]); //输出顶点信息 EnQueue(&Q, i); //将该顶点入队列 while (QueueEmpty(Q)) //当前队列不为空 { DeQueue(&Q, &i); //将对头元素出队,并将其值传给i for (j = 0; j < G.numVertexes; j++) { if (G.arc[i][j] == 1 && !visited[j]) //判断其他顶点若与当前顶点存在边且未被访问过 { visited[j] = 1; //标记为已访问 printf("%c", G.verx[j]); //打印结点信息 EnQueue(&Q, j); //将该结点入队 } } } } } }
标签:结点,队列,numVertexes,bfs,++,顶点,visited 来源: https://www.cnblogs.com/snow-joker/p/14304618.html