179 17 D:\新医大\数据结构\实验三 T1 2023年5月28日.cpp [Error] cannot convert 'QUEUE1' to 'int' for argument '2' to 'bool enQueue(SqQueue*&, int)'怎么修改
时间: 2023-12-05 20:06:19 浏览: 69
无法从 int? 转换为 int 运行时出现错误
根据错误提示,代码中有一个函数调用出现了类型不匹配的错误。出错的函数是 `enQueue`,它的第二个参数需要是整型 `int`,但实际上传入的是一个结构体 `QUEUE1`。因此需要将结构体中的 `v` 成员作为参数传入 `enQueue` 函数。
具体地,在 `BFSA` 函数中,调用 `enQueue` 函数时需要将 `QUEUE1` 结构体中的 `v` 成员作为第二个参数传递。修改后的代码如下:
```c++
bool enQueue(SqQueue *&q,int e){
if(q->rear ==MAXV -1){
return false;
}
q->rear++;
q->data[q->rear]=e;
return true;
}
int BFSA(AdjGraph *G,int u,int v) {
ArcNode *p;
SqQueue *qu;
InitQueue(qu);
int visited[MAXV];
for(int i=0;i<G->n;i++){
visited[i]=0;
}
QUEUE1 elem;
elem.v=u;
elem.parent=-1;
enQueue(qu,elem.v); // 将 elem.v 作为第二个参数传入 enQueue 函数
while(!QueueEmpty(qu)){
deQueue(qu,&elem.v);
if(elem.v==v){
break;
}
p=G->adjlist[elem.v].firstarc;
while(p!=NULL){
int w=p->adjvex;
if(visited[w]==0){
visited[w]=1;
QUEUE1 new_v;
new_v.v=w;
new_v.parent=elem.v;
enQueue(qu,new_v.v); // 将 new_v.v 作为第二个参数传入 enQueue 函数
}
p=p->nextarc;
}
}
if(elem.v!=v){
printf("不存在从%d到%d的路径\n",u,v);
return -1;
}else{
int len=0;
while(elem.parent!=-1){
len++;
elem=getQueueElem(qu,elem.parent);
}
printf("从%d到%d的最短路径长度为:%d\n",u,v,len);
return len;
}
DestroyQueue(qu);
}
```
阅读全文