У меня есть список связанных ссылок: 1 0 1 2 0 0 0
. Я хочу удалить весь последний узел «0», чтобы мой список выглядел так: 1 0 1 2
. Я попытался с помощью рекурсии:Удалить все последние узлы связанного списка, которые имеют значение = 0
Node *trimtList(Node* head) {
if (head->next->data == 0 && head->next->next == NULL) {
head->next = NULL;
return head;
}
trimList(head->next);
return head;
}
Я понимаю, что этот метод просто удалить последнюю 0, не все последние 0 ...
Node *trimtList(Node* head) {
if (head && !trimtList(head->next) && head->data == 0) {
delete head;
head = nullptr;
}
return head;
}
int main() {
List a;
a.head= new Node(1);
a.head->next = new Node(0);
a.head->next->next = new Node(2);
a.head->next->next->next = new Node(0);
a.head->next->next->next->next = new Node(0);
a.head= trimtList(a.head);
cout << a << endl;
}
Выход 1 0 2 2
, а затем окно уже перестает работать ...