150 likes | 276 Views
px. Vorbereitung:. struct SX { int x; struct SX *p; } *px, *ph;. px: Zeiger auf Listen- anfang ph: Hilfszeiger. px = NULL;. px zeigt auf leere Liste. px. ph. x. p. Listenaufbau 1:.
E N D
px Vorbereitung: struct SX { int x; struct SX *p; } *px, *ph; px: Zeiger auf Listen- anfang ph: Hilfszeiger px = NULL; px zeigt auf leere Liste
px ph x p Listenaufbau 1: ph = (struct SX *)malloc(sizeof(struct SX)); ph: Zeiger auf neu erstellte Speicherzelle für ein Listenelement
px Listenaufbau 1: ph = (struct SX *)malloc(sizeof(struct SX)); ph x = 5 ; ph p = NULL; Belege Datenteil mit 5 und Zeigerteil mit NULL ph 5 .
ph 5 . Listenaufbau 1: ph = (struct SX *)malloc(sizeof(struct SX)); ph x = 5 ; ph p = NULL; px Listenzeiger zeigt auf neues Element px = ph; px px zeigt auf Liste mit genau einem Element 5.
ph x = 2 ; ph p = NULL; Belege neues Element mit Daten: 2 und NULL px 5 . Listenaufbau 2: ph = (struct SX *)malloc(sizeof(struct SX)); ph: Zeiger auf zweites neues Listenelement ph .
px ph 2 5 . . Listenaufbau 2: ph = (struct SX *)malloc(sizeof(struct SX)); ph x = 2 ; ph p = NULL;
px p = ph; Lege Zeiger von erstem Listenelement auf das neue Element. px ph 2 5 . . Listenaufbau 2: ph = (struct SX *)malloc(sizeof(struct SX)); ph x = 2 ; ph p = NULL; px zeigt auf Liste mit zwei Elementen, 5 und 2.
ph x = 7 ; ph p = NULL; Belege neues Element mit Daten: 7 und NULL px p p = ph; Lege Zeiger von zweitem Listenelement auf das neue Element. px 2 5 . . 7 . Listenaufbau 3: ph = (struct SX *)malloc(sizeof(struct SX)); ph: Zeiger auf drittes neues Listenelement ph px zeigt auf Liste mit drei Elementen, 5, 2 und 7.
Lege Hilfszeiger auf 2 ph = px p; px p = px p p; Lege Zeiger von 5 auf 7 ph p = px; Lege Zeiger von 2 auf 5 px = ph; px zeigt auf 2 px 2 5 . . Sortieren: Starte Liste mit 2, dann 5, dann 7. Verändere entsprechend die Zeiger: ph px zeigt auf Liste mit drei Elementen in der sortierten Reihenfolge 7 .
ph = px p; Lege Hilfszeiger auf 2 px p = ph p; Lege Zeiger von 5 auf 7 Lösche alte Zelle free(ph); px 2 5 . . Entfernen: Entferne 2 aus der Liste: ph px zeigt auf Liste mit zwei Elementen, 5 und 7. 7 .
5 . Sortiert Einfügen von 6: Start am Listenanfang: Zeiger p auf px auf erstes Listenelement struct SX **p; p = &px; Prüfe, ob 6 > 5. if (*p)x < 6 Wenn ja, verschiebe Zeiger p zum Zeiger des nächsten Listenelements. p = &((*p)p); px p 7 .
5 . Sortiert Einfügen von 6: Prüfe, ob 6 > 5. if (*p)x < 6 Wenn ja, verschiebe Zeiger p zum Zeiger des nächsten Listenelements. p = &((*p)p); px p 7 .
5 . Sortiert Einfügen von 6: Prüfe, ob 7 > 6. if (*p)x < 6 Da nein, muss das neue Listenelement für 6 dazwischen eingeschoben werden. ph = *p; *p = (struct SX *)malloc(sizeof(struct SX)); px p ph 7 .
5 . Sortiert Einfügen von 6: Prüfe, ob 7 > 6. if (*p)x < 6 Da nein, muss das neue Listenelement für 6 dazwischen eingeschoben werden. ph = *p; *p = (struct SX *)malloc(sizeof(struct SX)); px p ph . 7 .
5 6 . . Sortiert Einfügen von 6: Lege Zeiger in neuem Element auf den richtigen Nachfolger 7: (*p) x = 6; (*p) p = ph ; px p ph 7 .