【发布时间】:2021-02-13 14:49:24
【问题描述】:
*已编辑:我的问题是我没有处理要删除的值是 LinkedList 头部的特殊情况。有人在答案部分修复它。
我有一个 Node 类,以及一个删除 String 值与任何节点匹配的节点的函数。
class Node
{
public:
string getName() const
{
return name;
}
Node* getLink() const
{
return link;
}
private:
string name;
Node* link;
};
typedef Node* NodePtr;
void deleteOneNode(NodePtr& head, string valueToDelete)
{
NodePtr currentPtr = head, previousPtr = head;
while (currentPtr != NULL && currentPtr->getName() != valueToDelete)
{
previousPtr = currentPtr;
currentPtr = currentPtr->getLink();
}
if (currentPtr != NULL)
{
previousPtr->setLink(currentPtr->getLink());
delete currentPtr; **afer this code run, the entire linked list is deleted**
}
}
我只想删除单个节点,而不是整个链表。当我调试链表时,我注意到整个链表在某个时候被删除了。 我不知道我做错了什么?
【问题讨论】:
-
这段代码运行后,整个链表都被删除了你怎么知道的?
-
@appleapple 我调试了程序并在这一点上弄清楚了。
-
@笑只是一个注释,下次发布触发行为的代码,即minimal reproducible example,以便其他人可以更轻松地帮助您。
标签: c++ class linked-list