我正在尝试使用类将节点从双向链表中分离出来,但是我不确定如何做到。我已经获得了删除前端的功能,但是再次尝试删除前端时,会遇到分段错误,或者当尝试删除除前端以外的任何其他内容时,该节点仍显示在列表中。任何帮助,将不胜感激。
void seperate(Node *p){
if (p->getPrev() == nullptr){ //element being deleted is the front
front = p->getNext(); //change front to next element
}
else{
((p->getPrev())->getNext())->setNext(p->getNext());
}
if(p->getNext() == nullptr){ //Element being delete is the back
back = p->getPrev(); //change back pointer to the prev element
}
else{
((p->getNext())->getPrev())->setNext(p->getPrev());
}
p->setNext(nullptr);
p->setPrev(nullptr);
size--;
}
答案 0 :(得分:0)
我认为这行不太正确:
((p->getPrev())->getNext())->setNext(p->getNext());
尤其是,((p->getPrev())->getNext())
总是要求出p
的值,这不是您想要的-我相信您正在尝试修改{{之前的节点的下一个指针1}},而不是p
本身的下一个指针。
所以我想你想要更多类似的东西:
p
...,您还需要对p->getPrev()->setNext(p->getNext());
行进行类似的更改。