verkettete Listen

Die Definition der Listenmethoden (4/4)

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.