gpt4 book ai didi

c++ - 使用类从双向链表中删除节点

转载 作者:太空宇宙 更新时间:2023-11-04 12:39:20 25 4
gpt4 key购买 nike

我正在尝试使用一个类从双向链表中分离一个节点,但我不完全确定该怎么做。我已经获得了删除前端的功能,但是再次尝试删除前端时出现段错误,或者当我尝试删除节点前端以外的任何其他内容时,该节点仍显示在我的列表中。任何帮助,将不胜感激。

    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--;
}

最佳答案

我觉得这句话不太对:

((p->getPrev())->getNext())->setNext(p->getNext());

特别是,((p->getPrev())->getNext()) 总是会计算出 p,这不是你想要的预期 - 我相信您正在尝试修改 p 之前节点的下一个指针,而不是 p 本身的下一个指针。

所以我想你想要更像这样的东西:

p->getPrev()->setNext(p->getNext());

...并且您需要对您的((p->getNext())->getPrev())->setNext(p->getPrev()); 行也是如此。

关于c++ - 使用类从双向链表中删除节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54964837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com