我遇到了无法从链接列表中删除节点的问题。我的问题有其他目的,但我已将问题范围缩小到无法删除上一个节点。
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;
}