下列伪代码有什么错误void BFS(ALGraph *G){ InitQueue(*Q);//初始化空队列 EnQueue(*Q,0);//第一个元素入队 while(!isQueueEmpty(*Q)){ i=DeQueue(*Q);//队首元素出队 visited[i]=1;//标记已访问 printf(“%c”,G->vertex[i]);//访问顶点vi for(p=G->vertex[i].firstedge;p;p=p->next){//依次搜索顶点vi的邻接顶点 if(!visited[p->adjvex]) EnQueue(*Q,p->adjvex);//顶点vj入队 } } }
时间: 2023-06-25 15:07:18 浏览: 239
人工智能 广度优先搜索BFS和A*搜索策略 C语言实现代码+实验报告
5星 · 资源好评率100%
伪代码中存在两个问题:
1. `void BFS(ALGraph *G)` 函数没有返回值类型,应该声明为 `void` 类型。
2. 在 `InitQueue(*Q)` 中的 `*` 号应该去掉,因为 `InitQueue` 函数参数已经是一个指针类型。
修改后的伪代码如下:
```
void BFS(ALGraph *G){
InitQueue(Q);//初始化空队列
EnQueue(Q,0);//第一个元素入队
while(!isQueueEmpty(Q)){
int i=DeQueue(Q);//队首元素出队
visited[i]=1;//标记已访问
printf("%c",G->vertex[i]);//访问顶点vi
for(p=G->vertex[i].firstedge;p;p=p->next){//依次搜索顶点vi的邻接顶点
if(!visited[p->adjvex])
EnQueue(Q,p->adjvex);//顶点vj入队
}
}
}
```
阅读全文