我的erase()函数中的bug用于链接列表

Bug in my Erase() function for linked list

本文关键字:bug 用于 链接 列表 erase 函数 我的      更新时间:2023-10-16

我正在尝试通过测试程序程序,并且我通过所有测试,除非涉及我的擦除功能,否则程序崩溃了。

我最好的猜测可能是删除前哨节点。或内存泄漏。

我怀疑任何人都愿意阅读所有这些代码并为您找到错误,尤其是在没有MCVE的情况下。乍一看,功能void erase(iterator it)

显然有问题

left->next_ = right;

right->prev_ = left;

您尚未检查右或左为空的,如果您在列表的开头或末尾删除,则会发生。另外,您应该相应地修改列表的front_back_

您可以在这些作业之前添加支票:

if(left)
    left->next_ = right;
else
    front_ = right;
if(right)
    right->prev_ = left;
else
    back_ = left;