void bfs(graph g,int v)
{
arcnode *p;
int que[100],front=0,rear=0;
int j;
cout<<g.adjlist[v].data<<' ';
vis[v]=1;
rear=(rear+1)%100;
que[rear]=v;
while(front!=rear)
{
front=(front+1)%100;
j=que[front];
p=g.adjlist[j].firstarc;
while(p)
{
if(vis[p->adjvex]==0)
{
cout<<g.adjlist[p->adjvex].data<<' ';
vis[p->adjvex]=1;
rear=(rear+1)%100;
que[rear]=p->adjvex;
}
p=p->nexarc;
}
}
}
算法思想:队列的使用,将开始节点入队,在入队时进行访问,当队列不空进行循环,出队时对该点的领接点进入队,并且访问输出,这样便实现了层次遍历。