定义循环队列

void BFS(AdjList *g,int vi){
int i,v;
int Queur[MAX],front=rear=0;//定义循环队列
EdgeNode *p;
printf("(%d,",vi);
printf("%c)",g->adjlist[vi].data);
visited[vi] = 1;
rear = (rear+1)%MAX;/*尾指针后移并且将vi入队*/
Queur[rear] = vi;
while(front != rear){
front = (front+1)%MAX;
v = Queur[front];//将队头元素出队,赋值给v;
p = g->adjlist[v].firstedge;
while(p != NULL){
if(visited[p->adjvex] == 0){
visited[p->adjvex] = 1;
printf("(%d,",p->adjvex);
printf("%c) ",g->adjlist[p->adjvex].data);
rear = (rear+1)%MAX;
Queur[rear] = p->adjvex;
}
p = p->next;
}
}
}