Dynamische Liste löschen

SebastianII

Grünschnabel
Hallo,

ich hab mal wieder eine Frage zu mit dynamischen Listen (einfach verkettet), und zwar will ich in meinem Programm die komplette Liste löschen. Kann ich denn mit „delete“ o.Ä. die komplette Liste löschen, oder muss ich erst jedes Element der Liste löschen und dann den Zeiger vom Listen-Anfang auf das Listen-Ende richten?

Vielen Dank

Sebastian
 
Hallo Sebastian!

Du musst jedes Element einzeln löschen so in der Art:
Code:
while(pAkt = pFirst)
{
  pFirst = pFirst->next;

  // das Element löschen
  delete pAkt;
}
dann den Zeiger vom Listen-Anfang auf das Listen-Ende richten
Das verstehe ich nicht! Wenn die Liste leer ist, dann ist der Anfang gleich dem Ende, nämlich NULL!

Gruß
Johannes
 
Wenn die Liste leer ist, dann ist der Anfang gleich dem Ende, nämlich NULL!

...Ähhm, ja das liegt wohl an meiner sehr umständlichen Programmierung. Ich hab es so gelernt, dass ich nen Zeiger am ENDE der der Liste habe, der ist ja immer NULL (glaub ich). Und wenn nun der Anfangszeiger und der Ende-Zeiger beider gleich sind, also NULL dann ist die Liste leer.

Brauch ich denn überhaupt den Ende-Zeiger? Ich muss ehrlich gestehen ich verstehe den SInn dieses Zeigers nicht so richtig. Vielleicht kannst du mal einen kurzen Blick auf den Quelltext werfen und mir eine kurze Erklärung dazu geben. Ich bin nämlich noch net so "bewandert" was C++ betrifft.

Vielen Dank, auch schon für die letzte Antwort, damit hast du mir sehr weiter geholfen!

MfG

Sebastian
 

Anhänge

Hallo zusammen.

Also du brauchst den Endezeiger nicht unbedingt. Aber ist ganz praktisch, weil wenn du etwas an die Liste anhängen willst, hängst du es einfach an pEnde->next, und hängst den Endezeiger um. Hättest du den Endezeiger nicht müsstest du jedesmal die ganze Liste durchsuchen um an das Ende zu kommen (z.B.:

Code:
pAkt = pAnfang;

while (pAkt->next != NULL)
{
     pAkt = pAkt->next;
}

// jetzt das neue Element einfügen

pAkt->next = pNew;
 
Also du brauchst den Endezeiger nicht unbedingt.
Aber das wäre ja Schwachsinn, jedesmal durch die Ganze Liste durch zu Laufen, beim Anhängen.
Und beim Löschen auch.
Also da wäre ja eine "Last in First Out" Liste sehr Langsam.

Gruß Homer
 
Zurück