我正在尝试通过一个测试程序,并且我通过了所有测试,除了涉及到我的删除功能时,程序崩溃了。
我最好的猜测可能是前面或后面的哨兵节点正在被删除。或内存泄漏。
最佳答案
我怀疑有人愿意阅读所有这些代码并为您找到错误,尤其是在没有 MCVE 的情况下。 .乍一看,函数 void erase(iterator it)
left->next_ = right;
right->prev_ = left;
您没有检查 right 或 left 是否为 null,如果您在列表的开头或结尾删除,则会发生这种情况。您还应该相应地修改列表的 front_
和 back_
。
您可以在这些作业之前添加检查:
if(left)
left->next_ = right;
else
front_ = right;
if(right)
right->prev_ = left;
else
back_ = left;
关于c++ - 我的链表的 Erase() 函数中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42464780/