fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct node {
  5. node *next;
  6. int val;
  7. };
  8.  
  9. typedef node* ptr_list;
  10.  
  11. ptr_list rmv_mul(ptr_list p,int n){
  12. if(p==NULL){
  13. return(p);
  14. }
  15. if (p->val%n==0){
  16. ptr_list tmp = p->next;
  17. delete(p);
  18. return rmv_mul(tmp, n); // <<== Pass tmp, not p; p is deleted
  19. } else {
  20. p->next = rmv_mul(p->next, n); // <<== Assign to p->next
  21. return (p);
  22. }
  23. }
  24.  
  25. int main() {
  26. ptr_list p = new node;
  27. p->val = 5;
  28. p->next = new node;
  29. p->next->val = 3;
  30. p->next->next = new node;
  31. p->next->next->val = 10;
  32. p->next->next->next = nullptr;
  33. ptr_list tmp = p;
  34. cout << "before" << endl;
  35. while (tmp) {
  36. cout << tmp->val << endl;
  37. tmp=tmp->next;
  38. }
  39. cout << "after" << endl;
  40. tmp = rmv_mul(p, 5);
  41. while (tmp) {
  42. cout << tmp->val << endl;
  43. tmp=tmp->next;
  44. }
  45. return 0;
  46. }
Success #stdin #stdout 0s 3468KB
stdin
Standard input is empty
stdout
before
5
3
10
after
3