Löschen von linear verketteten Listen

ibafluss

Erfahrenes Mitglied
Hey Community!
Ich hab mal wieder eine Frage: In meinem Buch "C von A bis Z" wird das Löschen einer linearen Liste so erklärt: http://openbook.galileocomputing.de...en_001.htm#mj39ba9c20a2cec7034e966d7751c62a53.

Warum geht das nicht einfach so? Also rein vom Prinzip her:

Code:
struct date
{
    int day;
    int month;
    int year;
    struct date *next;
};

struct date *anfang;

del_all ()
{
    struct date *zeiger1, *zeiger2;

    zeiger1 = anfang;

    while (zeiger1->next != NULL)
    {
        zeiger2 = zeiger1->next;

        free (zeiger1);

        zeiger1 = zeiger2;
    }

    free (zeiger1);   // Letztes Element löschen
}
 
Hallo,

Den einzigen Vorteil den die Lösung im Buch hat, ist, dass wenn während des Löschens ein Fehler auftritt der Zeiger "anfang" immer noch eine funktionierende Liste ist, die alle nicht gelöschten Elemente enthält. Außerdem kann der Algorithmus aus dem Buch auch dazu genutzt werden Teillisten aus einer Liste zu löschen.
 
Zurück