无法删除链接列表中的节点

Cannot delete node in LinkedList

本文关键字:节点 列表 链接 删除      更新时间:2023-10-16

我遇到了无法从链接列表中删除节点的问题。我的问题有其他目的,但我已将问题范围缩小到无法删除上一个节点。

void deleteNodes(LN<T>*& l) {
    if (l == nullptr) return;
    LN<T> *temp = nullptr;
    for (LN<T> *current = l->next, *previous = l; current != nullptr && previous != nullptr; previous = current, current = current->next) {
        delete previous;
    }
}

尝试删除上一个节点会导致程序崩溃错误/无限循环。

新更新:如果我删除"上一个=当前"并且只删除前一个一次,我会得到无限循环。

为什么要在 for 循环中使用所有内容

您可以使用简单的代码结构来执行此操作。试试这种方式,可能是因为代码中给出了您的 for 循环。

void deleteNodes(LN<T>*& l) {
if (l == nullptr) return;
LN<T> *temp = nullptr;
*previous = l; 
for (LN<T> *current = l->next; current != nullptr; current = current->next){
  if(previous != nullptr){  
    previous->next=nullptr;
    delete previous;
    previous = current;

  }
   else
     break;
}
    previous->next=nullptr;
    delete previous;
}