Mam problem z funkcją removeAll w implementacji listy jednokierunkowej. Zalożenie jest takie, że tworzę wskaźnik tymczasowy, który wskazuje na początek listy. Potem przechodzę po kolejnych elementach i usuwam ostatni (następny wskaźnik powinien wynosić NULL). W pierwszej iteracji, usuwa mi ostatnią liczbę, ale w miejscu usunięcia pojawiają się jakieś śmieci i funkcja się zapętla w nieskończoność.
struct elem {
int dane;
elem * nast;
};
void removeAll(elem*& lista)
{
while (lista != NULL) {
elem* tmp = lista;
while (true) {
if (tmp->nast == NULL) {
delete tmp;
break;
}
else {
tmp = tmp->nast;
}
}
}
}