einen Teil verstehe ich nicht bei den Doppelt verkettete Listen. Ich habe den Code nach geschrieben.
Code: Alles auswählen
void eingabe_sortiert(char *nname, char *vname)
{
struct angestellt *zeigerA, *zeigerB;
if(NULL == anfang)
{
anhaengen(nname, vname);
}
else
{
zeigerA = anfang;
while(zeigerA != NULL && (strcmp(zeigerA->name, n) < 0))
{
zeigerA = zeigerA->next;
}
//Element ist das größte, es wird hinten angehängt
if(NULL == zeigerA)
{
anhaengen(nname, vname);
}
//Element ist das kleinste, es wird ganz an den anfang plaziert
else if(zeigerA == anfang)
{
anfang = malloc(sizeof(struct angestellt));
strcpy(anfang->name, nname);
strcpy(anfang->vorname, vname);
anfang->next = zeiger;
anfang->previous = NULL;
}
else
{
//Element wird in die mitte eingefügt
zeigerB = anfang;
while(zeigerB->next != zeigerA)
{
zeigerB = zeigerB->next;
}
zeigerA = malloc(sizeof(struct angestellt));
strcpy(zeiger->name, nname);
strcpy(zeiger->vorname, vname);
zeigerA->next = zeigerB->next;
zeigerA->previous = zeigerB;
zeigerB->next = zeigerA;
zeigerB->next->previous = zeigerA;
}
}
}
http://openbook.rheinwerk-verlag.de/c_v ... 9e396d6fd8
Meine Frage ist jetzt: Ich verstehe nicht die Logik von der letzten Zeile.
Code: Alles auswählen
zeigerB->next->previous = zeigerA;