#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include “ALGraph.h”
int visited[MAXVEX]; /设访问标志数组为全局变量/
void BFSTraverse(ALGraph g)
{/广度优先遍历以邻接表存储的图g,由于BFS要求”先被访问的顶点的邻接点也先被访问”,故需借助队列Q实现/
// 请在这里补充代码,完成本关任务
/********** Begin *********/
int i;
SeqQueue *Q = (SeqQueue *)malloc(sizeof(SeqQueue)); //创建队列
for (i=0; i<g.vexnum; ++i){ /*访问标志数组初始化*/
visited[i] = 0;
}
InitQueue(Q); //队列的初始化
for (i=0; i<g.vexnum; ++i){
if(!visited[i]){ //如果第i个结点没有被访问
visited[i] = 1;
printf("%d ", g.vertices[i].vex);
EnQueue(Q, i); //将元素x入队
while (Q->len!=0){ //当队列不为空时,或者 Q->front != Q->rear
DeQueue(Q, &i); //将队头元素出队
ENode *p = g.vertices[i].firstarc;
while (p){
if (!vis