gpt4 book ai didi

c++ - 使用递归 C++ 从列表中删除元素

转载 作者:行者123 更新时间:2023-11-30 05:19:53 25 4
gpt4 key购买 nike

我有这个函数应该删除输入数字的倍数的元素。

ptr_lista rmv_mul(ptr_list p,int n){

if(p==NULL){
return(p);
}

if (p->val%n==0){
ptr_list tmp;
tmp = p->next;
delete(p);
rmv_mul(p->next,n);
return (p);
}
else{
rmv_mul(p->next,n);
return (p);
}
}

在从 0 到 10 的列表上执行这个,问题是元素被删除但不为空,所以我的打印函数给了我这个:

0 28992848 28992816 28992784 28992752 28992720 28992688 28992656 28992624 28992592

我该如何解决这个问题?

最佳答案

甚至无需尝试遵循您的逻辑,这两行就已经表明您遇到了问题:

delete(p);
rmv_mul(p->next,n);

原因是在 delete p(不需要括号,顺便说一句)之后,您将无法访问 p->next(这是未定义的行为)。

关于c++ - 使用递归 C++ 从列表中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40948365/

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