【发布时间】:2021-07-18 12:08:03
【问题描述】:
正如我所说,我想从具有最小值的列表节点中删除,为此我有第二个函数(有效),它只返回一个 int,它是列表中的最小节点值。我将此 int 传递给应该搜索该值的列表并删除包含它的节点的函数,但是我在重建前一个值和下一个值之间的链接时遇到问题(来自已删除节点的前一个和下一个节点)。我知道这是问题所在,因为当我尝试显示列表时,我得到了一些垃圾值。我做错了什么或者我应该添加什么来正确重建这些列表节点之间的链接?
简而言之边缘类
class Edge
{
private:
int _StartVertice;
int _EndVertice;
int _weight;
Edge* _NextEdge;
public:
Edge() :_StartVertice(0), _EndVertice(0), _weight(0), _NextEdge(nullptr) {};
const int& get_Weight() const { return _weight; };
Edge* get_NextEdge() { return _NextEdge; };
void set_NextEdge(Edge* NextEdge) { _NextEdge = new Edge; _NextEdge = NextEdge; };
};
List 中 head 是 Edge 类型的函数
void Edge_List::Delete_Minimal_Weight_Edge(int min_weight)
{
Edge* tmp = new Edge;
tmp = head;
Edge* prev = head;
while (tmp->get_NextEdge()->get_Weight() != min_weight)
{
prev = tmp;
tmp = tmp->get_NextEdge();
}
prev = tmp;
tmp = tmp->get_NextEdge();
prev->set_NextEdge(tmp);
delete tmp;
}
【问题讨论】: