BFS算法:void BFS(MGraph &G,int n,VertexType v){for(v=0;v<n;++v)visited[v]=0;for(v=0;v<n;++v)if(!visited[v]) // v尚未访问{int u,j;LinkQueue Q;InitQueue(Q); // 置空的辅助队列Qcout<<" "<<G.vexs[v];visited[v]=1;EnQueue(Q,v); // v入队列while(!QueueEmpty(Q)) // 若Q非空{DeQueue(Q,u); // 队头元素出队,置为ufor(j=0;j<n;j++)if((G.arcs[u][j]!=0)&&!visited[j]){visited[j]=1;cout<<" "<<G.vexs[j];EnQueue(Q,j);}} //while} //if}
1 回答

长风秋雁
TA贡献1757条经验 获得超7个赞
void BFS(MGraph &G,int n,VertexType v)
{
for(v=0;v<n;++v)
visited[v]=0;
// 怎么看都觉得下面的for有问题,仔细想想什么叫图的广度遍历
for(v=0;v<n;++v)
if(!visited[v]) // v尚未访问
{
int u,j;
LinkQueue Q;
InitQueue(Q); // 置空的辅助队列Q
cout<<" "<<G.vexs[v];
visited[v]=1;
EnQueue(Q,v); // v入队列
while(!QueueEmpty(Q)) // 若Q非空
{
DeQueue(Q,u); // 队头元素出队,置为u
for(j=0;j<n;j++)
if((G.arcs[u][j]!=0)&&!visited[j])
{
visited[j]=1;
cout<<" "<<G.vexs[j];
EnQueue(Q,j);
}
} //while
} //if
}
- 1 回答
- 0 关注
- 165 浏览
添加回答
举报
0/150
提交
取消