图的广度优先遍历(非递归)分析:主要思想用队列实现,(与二叉树的层次遍历类似,)第一个结点A入队,然后与其相关的结点都入队,A出队并输出A已经被访问,,此时找与队首元素(假设为B)相关的结点,全部入队,B出队并输出B已经被访问,依次循环直到队列为空。
void DFS(AdjMatrix *G,Visit *V)
{
int queue[10];
int front=0,rear=0,i=1,j;
queue[++rear]=1;
printf("结点1已入队!\n");
V->a2[0]=1;
//printf("%5d",G->vexnum);
while(front!=rear)
{
for(j=1;j<=G->vexnum;j++)
{
if(G->a[i][j]==1&&V->a2[j-1]==0)
{
queue[++rea