html5-img
1 / 28

Verkettete Liste

Verkettete Liste. Visualisierung. New-Operator. Mit dem New-Operator kann zur Laufzeit (dynamisch) Speicherplatz reserviert und angelegt werden Vorteil:

hall-sharpe
Download Presentation

Verkettete Liste

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. Verkettete Liste Visualisierung

  2. New-Operator • Mit dem New-Operator kann zur Laufzeit (dynamisch) Speicherplatz reserviert und angelegt werden • Vorteil: • Es wird lediglich der benötigte Speicherplatz reserviert und nicht beispielsweise über ein Feld (unnötig) viel oder zu wenig Speicherplatz reserviert • Man kann den Speicher wieder freigeben, ohne die Speicherorganisation zu zerstören (Destruktoren machen zum ersten Mal Sinn) • Objekte können als Pointer angelegt werden • Einfacher als in der strukturierten Programmiersprache C (dort mit malloc und calloc und free)

  3. Klasse Auto Hersteller Typ Nutzdaten Lege neues Objekt an Farbe KW / PS Pointer auf nächstes Objekt Auto *next Auto *start = NULL Das Programm wird gestartet Auto *ende = NULL

  4. Klasse Auto Hersteller Typ Nutzdaten Lege neues Objekt an Farbe KW / PS Pointer auf nächstes Objekt Auto *next Button wird geklickt Auto *start = NULL Auto *ende = NULL

  5. Klasse Auto Hersteller Typ Nutzdaten Lege neues Objekt an Farbe KW / PS Pointer auf nächstes Objekt Auto *next Auto *temp Auto *start = NULL Mit dem New-Operator wirdein neues Objekt angelegt Auto *ende = NULL Hersteller Typ Farbe KW / PS Auto *next = NULL

  6. Klasse Auto Hersteller Typ Nutzdaten Lege neues Objekt an Farbe KW / PS Pointer auf nächstes Objekt Auto *next Auto *temp Auto *start = NULL Wenn *start = Null ist, Setze *start und *ende auf das neue Objekt Auto *ende = NULL Hersteller Typ Farbe KW / PS Auto *next = NULL

  7. Klasse Auto Hersteller Typ Nutzdaten Lege neues Objekt an Farbe KW / PS Pointer auf nächstes Objekt Auto *next Auto *temp Auto *start Das ist der Fall Auto *ende Hersteller Typ Farbe KW / PS Auto *next = NULL

  8. Klasse Auto Hersteller Typ Nutzdaten Lege neues Objekt an Farbe KW / PS Button wird geklickt Pointer auf nächstes Objekt Auto *next Auto *temp Auto *start Auto *ende Hersteller Typ Farbe KW / PS Auto *next = NULL

  9. Klasse Auto Hersteller Typ Nutzdaten Lege neues Objekt an Farbe KW / PS Pointer auf nächstes Objekt Auto *next Auto *temp Hersteller Typ Auto *start Farbe KW / PS Auto *next = NULL Auto * Mit dem New-Operator wirdein neues Objekt angelegt Hersteller Typ Farbe KW / PS Auto *next = NULL

  10. Klasse Auto Hersteller Typ Nutzdaten Lege neues Objekt an Farbe KW / PS Pointer auf nächstes Objekt Auto *next Auto *temp Hersteller Typ Auto *start Farbe KW / PS Auto *next = NULL Auto *ende Wenn *start = Null ist, Setze *start und *ende auf das neue Objekt Hersteller Typ Farbe KW / PS Auto *next = NULL

  11. Klasse Auto Hersteller Typ Nutzdaten Lege neues Objekt an Farbe KW / PS Pointer auf nächstes Objekt Auto *next Auto *temp Hersteller Typ Auto *start Farbe KW / PS Auto *next = NULL Auto *ende Das ist nicht der Fall Hersteller Typ Farbe KW / PS Auto *next = NULL

  12. Klasse Auto Hersteller Typ Nutzdaten Lege neues Objekt an Farbe KW / PS Pointer auf nächstes Objekt Auto *next Auto *temp Hersteller Typ Auto *start Farbe KW / PS Auto *next = NULL Auto *ende Hersteller Jetzt tritt der else-Fall in Kraft Typ Farbe KW / PS Auto *next = NULL

  13. Klasse Auto Hersteller Typ Nutzdaten Lege neues Objekt an Farbe KW / PS Pointer auf nächstes Objekt Auto *next Auto *temp Hersteller Typ Auto *start Farbe KW / PS Auto *next = NULL Auto *ende setze den Pointer *ende->next auf *temp Hersteller Typ Farbe KW / PS Auto *next

  14. Klasse Auto Hersteller Typ Nutzdaten Lege neues Objekt an Farbe KW / PS Pointer auf nächstes Objekt Auto *next Auto *temp Hersteller Typ Auto *start Farbe KW / PS Auto *next = NULL Auto *ende Setzte den Pointer *ende auf *temp Hersteller Typ Farbe KW / PS Auto *next

  15. Klasse Auto Hersteller Typ Nutzdaten Lege neues Objekt an Farbe KW / PS Button wird geklickt Pointer auf nächstes Objekt Auto *next Auto *temp Hersteller Typ Auto *start Farbe KW / PS Auto *next = NULL Auto *ende Hersteller Typ Farbe KW / PS Auto *next

  16. Klasse Auto Hersteller Typ Nutzdaten Lege neues Objekt an Farbe KW / PS Mit dem New-Operator wirdein neues Objekt angelegt Pointer auf nächstes Objekt Auto *next Auto *temp Hersteller Typ Auto *start Farbe KW / PS Auto *next = NULL Auto *ende Hersteller Hersteller Typ Typ Farbe Farbe KW / PS KW / PS Auto *next Auto *next = NULL

  17. Klasse Auto Hersteller Typ Nutzdaten Lege neues Objekt an Farbe KW / PS Pointer auf nächstes Objekt Auto *next Auto *temp Wenn *start = Null ist, Setze *start und *ende auf das neue Objekt Hersteller Typ Auto *start Farbe KW / PS Auto *next = NULL Auto *ende Hersteller Hersteller Typ Typ Farbe Farbe KW / PS KW / PS Auto *next Auto *next = NULL

  18. Klasse Auto Hersteller Typ Nutzdaten Lege neues Objekt an Farbe KW / PS Pointer auf nächstes Objekt Auto *next Auto *temp Das ist aber nicht der Fall. Also tritt wieder der else-Fall in Kraft Hersteller Typ Auto *start Farbe KW / PS Auto *next = NULL Auto *ende Hersteller Hersteller Typ Typ Farbe Farbe KW / PS KW / PS Auto *next Auto *next = NULL

  19. Klasse Auto Hersteller Typ Nutzdaten Lege neues Objekt an Farbe KW / PS setze den Pointer *ende->next auf *temp Pointer auf nächstes Objekt Auto *next Auto *temp Hersteller Typ Auto *start Farbe KW / PS Auto *next Auto *ende Hersteller Hersteller Typ Typ Farbe Farbe KW / PS KW / PS Auto *next Auto *next = NULL

  20. Klasse Auto Hersteller Typ Nutzdaten Lege neues Objekt an Farbe KW / PS Pointer auf nächstes Objekt Auto *next Auto *temp Setzte den Pointer *ende auf *temp Hersteller Typ Auto *start Farbe KW / PS Auto *next Auto *ende Hersteller Hersteller Typ Typ Farbe Farbe KW / PS KW / PS Auto *next Auto *next = NULL

  21. Klasse Auto Hersteller Typ Nutzdaten Lege neues Objekt an Farbe KW / PS Pointer auf nächstes Objekt Auto *next Auto *temp Und so würde es weiter gehen.Ein neues Objekt würde angelegt werden durch Klicken des Buttons. *temp zeigt auf das neue Objekt.Die Pointer würden wie zuvorver- bzw. umgebogen werden. Hersteller Typ Auto *start Farbe KW / PS Auto *next Auto *ende Hersteller Hersteller Typ Typ Farbe Farbe KW / PS KW / PS Auto *next Auto *next = NULL

  22. Klasse Auto Hersteller Typ Nutzdaten Lege neues Objekt an Farbe KW / PS Pointer auf nächstes Objekt Auto *next Auto *temp Folgende Erweiterungsmöglichkeiten wären denkbar.1. Erweiterung der Klasse mit dem Pointerprevious (vorheriger Knoten)(Hier rot dargestellt) Auto *prev Pointer auf vorheriges Objekt Hersteller Typ Auto *start Farbe KW / PS Auto *next Auto *prev Auto *ende Hersteller Hersteller Typ Typ Farbe Farbe KW / PS KW / PS Auto *next Auto *next = NULL = NULL Auto *prev Auto *prev

  23. Klasse Auto Hersteller Typ Nutzdaten Lege neues Objekt an Farbe KW / PS Eine weitere Erweiterungsmöglichkeit wäre danach: Ein Löschen einzelner Knoten Pointer auf nächstes Objekt Auto *next Auto *temp Auto *prev Pointer auf vorheriges Objekt Hersteller Typ Auto *start Farbe KW / PS Auto *next Auto *prev Auto *ende Hersteller Hersteller Typ Typ Farbe Farbe KW / PS KW / PS Auto *next Auto *next = NULL = NULL Auto *prev Auto *prev

  24. Klasse Auto Hersteller Typ Nutzdaten Lege neues Objekt an Farbe KW / PS Pointer auf nächstes Objekt Auto *next Auto *temp Der gelb dargestellte Knoten soll gelöscht werden.Was muss alles geprüft werden?Welche Pointer müssen verbogen werden ? Auto *prev Pointer auf vorheriges Objekt Hersteller Typ Auto *start Farbe KW / PS Auto *next Auto *prev Auto *ende Hersteller Hersteller Typ Typ Farbe Farbe KW / PS KW / PS Auto *next Auto *next = NULL = NULL Auto *prev Auto *prev

  25. Klasse Auto Hersteller Typ Nutzdaten Lege neues Objekt an Farbe KW / PS Hersteller Eine weitere Erweiterungsmöglichkeit wäre danach: Ein Einfügen eines Knoten an eine bestimmte Stelle. Hier grün eingefärbt. Pointer auf nächstes Objekt Auto *next Typ Auto *temp Auto *prev Pointer auf vorheriges Objekt Farbe KW / PS Hersteller Auto *next Typ Auto *start Auto *prev Farbe KW / PS Auto *next Auto *prev Auto *ende Hersteller Hersteller Typ Typ Farbe Farbe KW / PS KW / PS Auto *next Auto *next = NULL = NULL Auto *prev Auto *prev

  26. Klasse Auto Hersteller Typ Nutzdaten Lege neues Objekt an Farbe KW / PS Eine weitere Erweiterungsmöglichkeit wäre danach: Das Ändern der Nutzdaten eines Knoten an eine bestimmte Stelle. Hier grün eingefärbt. Pointer auf nächstes Objekt Auto *next Auto *temp Auto *prev Pointer auf vorheriges Objekt Hersteller Typ Auto *start Farbe KW / PS Auto *next Auto *prev Auto *ende Hersteller Hersteller Typ Typ Farbe Farbe KW / PS KW / PS Auto *next Auto *next = NULL = NULL Auto *prev Auto *prev

  27. Klasse Auto Hersteller Typ Nutzdaten Lege neues Objekt an Farbe KW / PS Eine weitere Erweiterungsmöglichkeit wäre danach: Das Tauschen zweier Knoten bzw. derer Knoten Hier grün eingefärbt. Pointer auf nächstes Objekt Auto *next Auto *temp Auto *prev Pointer auf vorheriges Objekt Hersteller Typ Auto *start Farbe KW / PS Auto *next Auto *prev Auto *ende Hersteller Hersteller Typ Typ Farbe Farbe KW / PS KW / PS Auto *next Auto *next = NULL = NULL Auto *prev Auto *prev

  28. Erweiterungsmöglichkeiten • Sortierstartpointer • Sortierendepointer • Sortierpreviouspointer in der Klasse • Sortiernextpointer in der Klasse

More Related