A-A+

假定Anxn是一个无向简单图G的邻接矩阵 其中n是图G的顶点数。对Anxn采用顺序的方法存储

2022-08-12 16:06:53 问答库 阅读 196 次

问题详情

假定Anxn是一个无向简单图G的邻接矩阵,其中n是图G的顶点数。对Anxn采用顺序的方法存储其下三角,然后写出对G进行宽度优先搜索的算法。


请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:void BFSTraverse(MGraphGint B[]){/*对采用压缩存储的无向图G进行广度优先搜索*/for(i=0;i<G.vexnum;i++) /*转换*/for(j=0;j<G.vexnum;j++)B[k++]=Garcs[i][j].adj;for(v=0;v<G.vexnum;v++)visited[v]=0;row=1;InitQueu(Q); /*记住每行的首元素位置*/for(v=0;v<Gvexnum;v++)if(!visited[v]){ visit(Q);visited[v]=1;EnQueue(Qv);while(!EmptyQueue)(Q)){DeQueue(Qv);i=row;j=V:while(i<G.vexnum){k=i(i+1)/2+j;if(B[k])==1&&!visited[i])f visit(i);visited[i]=1;EnQueue(Qi);}i++;}row++;}}}
voidBFSTraverse(MGraphG,intB[]){/*对采用压缩存储的无向图G进行广度优先搜索*/for(i=0;i<G.vexnum;i++)/*转换*/for(j=0;j<G.vexnum;j++)B[k++]=Garcs[i][j].adj;for(v=0;v<G.vexnum;v++)visited[v]=0;row=1;InitQueu(Q);/*记住每行的首元素位置*/for(v=0;v<Gvexnum;v++)if(!visited[v]){visit(Q);visited[v]=1;EnQueue(Q,v);while(!EmptyQueue)(Q)){DeQueue(Q,v);i=row;j=V:while(i<G.vexnum){k=i(i+1)/2+j;if(B[k])==1&&!visited[i])fvisit(i);visited[i]=1;EnQueue(Q,i);}i++;}row++;}}}

考点:假定,矩阵