int Liste::groesse()
{
Listenelement* akt = root;
int g = 0;
while (akt != 0) // Ende der Liste erreicht?
{
g++;
akt = akt->next;
}
return g;
}
Zum Schluß bleibt uns noch die Implentation der Löschmethode. Diese ist dank unserer genialen Vorarbeit sehr einfach
void Liste::loesche()
{
delete root;
}
Da der Destruktor von Listenelement
so ausgelegt war, daß auch
das folgende Listenelement gelöscht wird, wird auf diese Weise die ganze
Liste mit nur einem Aufrug gelöscht. Man beachte, daß wirklich alle
Elemente gelöscht werden. Oft wird der Fehler gemacht zwar die Wurzel
zu löschen, es wird dabei aber nicht beachtet, auch die Folgelemente
zu löschen. Bei unserer Implementierung erfolgt das automatisch.
Daher mußten wir auch in der Funktion zum Entfernen eines Elements den
next
-Zeiger explizit auf NULL
setzen, denn sonst hätte der
delete
-Aufruf die gesamte Liste gelöscht. Da der Pointer aber
schon NULL
ist, erfolgt keine weitere Löschaktion.