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
}
}