我遇到了无法从链接列表中删除节点的问题。我的问题有另一个目的,但我已经将问题缩小到无法删除上一个节点。
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;
}
}
尝试删除上一个节点会导致程序崩溃错误/无限循环。
新更新:如果我删除&#34; previous = current&#34;并且只删除前一次我得到一个无限循环。
答案 0 :(得分:0)
为什么要在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;
}