我有這個函數應該刪除輸入數字的倍數的元素。從遞歸列表中刪除元素C++
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
我該如何解決這個問題?
不工作,我得到分段錯誤。 – slash89mf
你應該首先嚐試刪除3個節點,並且當你得到這個工作時,看看它是否適用於10個節點。這樣,它變得更容易處理。 – PaulMcKenzie
'std :: list'的'remove_if'成員函數會非常容易... –