Cześć.
Mam funkcje która powinna usuwać wszystkie elementy o danej wartości z listy. Problem polega na tym, że program crashuje sie za każdym razem kiedy próbuję usunąć wartości które w którymś miejscu są obok siebie, na przykład 0,7,9,9,8 (kiedy próbuje usunąć 9). Dodatkowo jest jeszcze problem kiedy lista składa się z np samych 0 i próbuję to usunąć.
Funkcja:
void removeAllValue(List2W& l, int x){
if(isEmpty(l))
return;
Element *temp = l.head, *del;
int i;
if ( l.head->value == x ){
temp = temp->next;
deleteHead(l, i);
}
do {
if ( temp->value == x ){
if ( l.tail == temp ) {
temp = temp->next;
deleteTail(l, i);
return;
}
del = temp;
temp = temp->next;
del->next->prev = del->prev;
del->prev->next = del->next;
delete del;
} else {
temp = temp->next;
}
} while ( temp->prev != l.tail);
}
Cały kod https://pastebin.com/57SeC0uK (na początku trzeba wpisać komendy go i in, następnie ih żeby dodać na początku listy)