verkettete Listen

Die Definition der Listenmethoden (3/4)

Das Entfernen implementieren wir indem wir den Kunden suchen und dann aus der Liste ruswerfen. Wir benutzen den Vergleichsoperator, den die Klasse Kunde zur Verfügung stellen muß. Für die Größe der Liste zählen wir einfach alle Elemente durch.

void Liste::entfernen(Kunde k)
{
  Listenelement* akt = root;
  int gefunden = 0;
  if (akt->k == k)       // gleich am Anfang
  {
    root = akt->next;
    akt->next = 0;
    delete akt;
  }
  while((akt->next != 0) && (gefunden == 0))  // kein Ende und nicht gefunden
  {  
    if (akt->next->k == k)           // Ist das der Kunde?
      gefunden = 1;
    else
      akt = akt->next;           // durchlaufe die Liste
  }
  if (gefunden)
  {
    Listenelement* tmp = akt->next;
    akt->next = akt->next->next; // Alter Nachf. wird Nachf. des Vorgängers
    tmp->next = 0;               // ausscheidender Kunde hat keinen Nachf. mehr
    delete tmp;                  // und weg damit
  }
}