1 / 15

Vorbereitung:

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:.

Download Presentation

Vorbereitung:

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. px ph x p Listenaufbau 1: ph = (struct SX *)malloc(sizeof(struct SX)); ph: Zeiger auf neu erstellte Speicherzelle für ein Listenelement

  3. 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 .

  4. 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.

  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 .

  6. px ph 2 5 . . Listenaufbau 2: ph = (struct SX *)malloc(sizeof(struct SX)); ph  x = 2 ; ph  p = NULL;

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

  8. 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.

  9. 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 .

  10. 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 .

  11. 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 .

  12. 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 .

  13. 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 .

  14. 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 .

  15. 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 .

More Related