【发布时间】:2020-07-19 07:41:41
【问题描述】:
我被困在班级的链表析构函数上。这就是我这里的:
LinkedList::~LinkedList()
{
LinkedList *forward = nullptr;
LinkedList *current = this;
//iterate through list, deleting each element as we go
while (current != nullptr)
{
//set next pointer to current's next
forward = current->next;
delete current; //delete the current memory
current = forward; //reset current to next's pointer
}
}
当我运行它时,我得到一个段错误。我只想从我的链表中删除一个节点。那可能吗?另外,我没有像以前从其他列表中那样获得“头”指针,所以我使用了“this”,这行得通吗?
Aka - .cpp 在链表中找到要删除的位置,重新组织它周围的下一个指针,然后删除节点(调用此析构函数)
(当我用一个空的析构函数运行我的程序时,它打印出来很好,但当然有内存泄漏)
感谢任何帮助!
【问题讨论】:
-
从上面的代码中可以清楚地看出您将列表节点与列表本身混淆了。您调用
LinkedList的类实际上是一个列表节点。通常要实现一个链表,您将有两个类,一个用于节点,一个用于整个列表。列表类管理节点,这就是您在上面尝试做的事情,但是由于混淆,您弄错了。