class P_Node { public: int id; // 节点 ID bool is_allocated; // 是否已经分配 vector<int> edges; // 与该节点相连的边的终点 ID };删除edges的制定边
时间: 2024-02-06 21:02:03 浏览: 71
codes.zip_通讯编程_C/C++__通讯编程_C/C++_
5星 · 资源好评率100%
要删除指定边,需要知道该边的终点 ID。假设要删除起点为 start_id,终点为 end_id 的边,可以按照以下步骤进行操作:
1. 遍历起点为 start_id 的节点的 edges 数组,找到终点为 end_id 的边的下标 index。
2. 如果找到了,将该下标对应的元素删除。
3. 如果没有找到,说明该边不存在,可以直接返回。
下面是示例代码:
```c++
void delete_edge(vector<P_Node>& nodes, int start_id, int end_id) {
for (auto& node : nodes) {
if (node.id == start_id) {
for (auto it = node.edges.begin(); it != node.edges.end(); ++it) {
if (*it == end_id) {
node.edges.erase(it);
return;
}
}
// 没有找到该边,直接返回
return;
}
}
}
```
在上面的代码中,nodes 表示节点数组,start_id 和 end_id 分别表示起点和终点的 ID。如果找到了指定的边,就调用 vector 的 erase 方法将其删除,然后直接返回。如果遍历完所有起点为 start_id 的节点都没有找到该边,就直接返回。
阅读全文