帮我修改一下这段代码int NextAdjVertex(AdjList G,int v,int w) { ArcNode *p; p=G->vertex[v].firstarc; while(p!=NULL&&p.adjvex!=w) { p=p->nextarc; return p->nextarc; } return -1; }
时间: 2024-02-12 10:05:06 浏览: 65
《数据结构与算法》-李春葆 实验报告-基于邻接链表存储的无向图形算法实践-邻接链表
好的,根据你提供的代码,我看出其中存在一些错误,我帮你修改一下:
```c
int NextAdjVertex(AdjList G, int v, int w) {
ArcNode *p = G->vertex[v].firstarc;
while (p != NULL && p->adjvex != w) {
p = p->nextarc;
}
if (p == NULL) {
// 没有找到相邻的节点 w
return -1;
}
return p->nextarc->adjvex;
}
```
主要修改如下:
1. 在 while 循环中,应该将 `return p->nextarc;` 移到循环外面,以便遍历完所有的相邻节点后再返回相应的结果。
2. 在返回相邻节点时,应该返回 `p->nextarc->adjvex`,因为 `p->nextarc` 才是相邻节点的信息。
希望这份修改后的代码能够帮助到你!
阅读全文