请设计void addEdge(Graph g, VertexType v1, VertexType v2, int w)函数。 该函数在图g插入边v1v2(权为w). 插入的边结点作为边链表的第1个结点. 如果顶点不存在,则什么也不做。 如果待插入的边已存在, 存储小权值. 以下函数已定义,可以直接调用 int locateVertex(Graph g, VertexType v); 请注意,本题有预置代码,只需提交所要求的函数定义代码即可。
时间: 2024-02-18 07:03:06 浏览: 28
以下是函数定义代码:
```c
void addEdge(Graph g, VertexType v1, VertexType v2, int w) {
int loc1 = locateVertex(g, v1);
int loc2 = locateVertex(g, v2);
if (loc1 == -1 || loc2 == -1) {
return;
}
EdgeNode *p = g[loc1].firstEdge;
while (p != NULL) {
if (p->adjvex == loc2) {
if (p->weight > w) {
p->weight = w;
}
return;
}
p = p->next;
}
EdgeNode *newEdge = new EdgeNode;
newEdge->adjvex = loc2;
newEdge->weight = w;
newEdge->next = g[loc1].firstEdge;
g[loc1].firstEdge = newEdge;
}
```
具体思路如下:
首先,通过 `locateVertex` 函数获取顶点 `v1` 和 `v2` 在图中的位置,如果有一个顶点不存在,则直接返回。
接着,遍历顶点 `v1` 的边链表,如果找到了顶点 `v2` 的边,则比较边的权值,如果当前边的权值比待插入的边的权值大,则更新当前边的权值为待插入边的权值,然后直接返回。
最后,如果在顶点 `v1` 的边链表中没有找到顶点 `v2` 的边,则新建一个边结点,并将其插入到顶点 `v1` 的边链表的第一个位置。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)