Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Sofie Schlenk Geändert vor über 11 Jahren
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
Typ Hersteller Farbe KW / PS Auto *next Klasse Auto Nutzdaten Pointer auf nächstes Objekt Lege neues Objekt an Auto *start = NULL Auto *ende = NULL Das Programm wird gestartet
4
Typ Hersteller Farbe KW / PS Auto *next Klasse Auto Nutzdaten Pointer auf nächstes Objekt Lege neues Objekt an Auto *start = NULL Auto *ende = NULL Button wird geklickt
5
Typ Hersteller Farbe KW / PS Auto *next Klasse Auto Nutzdaten Pointer auf nächstes Objekt Lege neues Objekt an Typ Hersteller Farbe KW / PS Auto *next Auto *start = NULL Auto *ende = NULL = NULL Auto *temp Mit dem New-Operator wird ein neues Objekt angelegt
6
Typ Hersteller Farbe KW / PS Auto *next Klasse Auto Nutzdaten Pointer auf nächstes Objekt Lege neues Objekt an Typ Hersteller Farbe KW / PS Auto *next Auto *start = NULL Auto *ende = NULL = NULL Auto *temp Wenn *start = Null ist, Setze *start und *ende auf das neue Objekt
7
Typ Hersteller Farbe KW / PS Auto *next Klasse Auto Nutzdaten Pointer auf nächstes Objekt Lege neues Objekt an Typ Hersteller Farbe KW / PS Auto *next Auto *start Auto *ende = NULL Auto *temp Das ist der Fall
8
Typ Hersteller Farbe KW / PS Auto *next Klasse Auto Nutzdaten Pointer auf nächstes Objekt Lege neues Objekt an Typ Hersteller Farbe KW / PS Auto *next Auto *start Auto *ende = NULL Auto *temp Button wird geklickt
9
Typ Hersteller Farbe KW / PS Auto *next Klasse Auto Nutzdaten Pointer auf nächstes Objekt Lege neues Objekt an Typ Hersteller Farbe KW / PS Auto *next Typ Hersteller Farbe KW / PS Auto *next Auto *start Auto * = NULL Auto *temp Mit dem New-Operator wird ein neues Objekt angelegt
10
Typ Hersteller Farbe KW / PS Auto *next Klasse Auto Nutzdaten Pointer auf nächstes Objekt Lege neues Objekt an Typ Hersteller Farbe KW / PS Auto *next Typ Hersteller Farbe KW / PS Auto *next Auto *start Auto *ende = NULL Auto *temp Wenn *start = Null ist, Setze *start und *ende auf das neue Objekt
11
Typ Hersteller Farbe KW / PS Auto *next Klasse Auto Nutzdaten Pointer auf nächstes Objekt Lege neues Objekt an Typ Hersteller Farbe KW / PS Auto *next Typ Hersteller Farbe KW / PS Auto *next Auto *start Auto *ende = NULL Auto *temp Das ist nicht der Fall
12
Typ Hersteller Farbe KW / PS Auto *next Klasse Auto Nutzdaten Pointer auf nächstes Objekt Lege neues Objekt an Typ Hersteller Farbe KW / PS Auto *next Typ Hersteller Farbe KW / PS Auto *next Auto *start Auto *ende = NULL Auto *temp Jetzt tritt der else-Fall in Kraft
13
Typ Hersteller Farbe KW / PS Auto *next Klasse Auto Nutzdaten Pointer auf nächstes Objekt Lege neues Objekt an Typ Hersteller Farbe KW / PS Auto *next Typ Hersteller Farbe KW / PS Auto *next Auto *start Auto *ende = NULL Auto *temp setze den Pointer *ende->next auf *temp
14
Typ Hersteller Farbe KW / PS Auto *next Klasse Auto Nutzdaten Pointer auf nächstes Objekt Lege neues Objekt an Typ Hersteller Farbe KW / PS Auto *next Typ Hersteller Farbe KW / PS Auto *next Auto *start Auto *ende = NULL Auto *temp Setzte den Pointer *ende auf *temp
15
Typ Hersteller Farbe KW / PS Auto *next Klasse Auto Nutzdaten Pointer auf nächstes Objekt Lege neues Objekt an Typ Hersteller Farbe KW / PS Auto *next Typ Hersteller Farbe KW / PS Auto *next Auto *start Auto *ende = NULL Auto *temp Button wird geklickt
16
Typ Hersteller Farbe KW / PS Auto *next Klasse Auto Nutzdaten Pointer auf nächstes Objekt Lege neues Objekt an Typ Hersteller Farbe KW / PS Auto *next Typ Hersteller Farbe KW / PS Auto *next Auto *start Auto *ende = NULL Auto *temp Mit dem New-Operator wird ein neues Objekt angelegt Typ Hersteller Farbe KW / PS Auto *next = NULL
17
Typ Hersteller Farbe KW / PS Auto *next Klasse Auto Nutzdaten Pointer auf nächstes Objekt Lege neues Objekt an Typ Hersteller Farbe KW / PS Auto *next Typ Hersteller Farbe KW / PS Auto *next Auto *start Auto *ende = NULL Auto *temp Typ Hersteller Farbe KW / PS Auto *next = NULL Wenn *start = Null ist, Setze *start und *ende auf das neue Objekt
18
Typ Hersteller Farbe KW / PS Auto *next Klasse Auto Nutzdaten Pointer auf nächstes Objekt Lege neues Objekt an Typ Hersteller Farbe KW / PS Auto *next Typ Hersteller Farbe KW / PS Auto *next Auto *start Auto *ende = NULL Auto *temp Typ Hersteller Farbe KW / PS Auto *next = NULL Das ist aber nicht der Fall. Also tritt wieder der else-Fall in Kraft
19
Typ Hersteller Farbe KW / PS Auto *next Klasse Auto Nutzdaten Pointer auf nächstes Objekt Lege neues Objekt an Typ Hersteller Farbe KW / PS Auto *next Typ Hersteller Farbe KW / PS Auto *next Auto *start Auto *ende Auto *temp Typ Hersteller Farbe KW / PS Auto *next = NULL setze den Pointer *ende->next auf *temp
20
Typ Hersteller Farbe KW / PS Auto *next Klasse Auto Nutzdaten Pointer auf nächstes Objekt Lege neues Objekt an Typ Hersteller Farbe KW / PS Auto *next Typ Hersteller Farbe KW / PS Auto *next Auto *start Auto *ende Auto *temp Typ Hersteller Farbe KW / PS Auto *next = NULL Setzte den Pointer *ende auf *temp
21
Typ Hersteller Farbe KW / PS Auto *next Klasse Auto Nutzdaten Pointer auf nächstes Objekt Lege neues Objekt an Typ Hersteller Farbe KW / PS Auto *next Typ Hersteller Farbe KW / PS Auto *next Auto *start Auto *ende Auto *temp Typ Hersteller Farbe KW / PS Auto *next = NULL 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 zuvor ver- bzw. umgebogen werden.
22
Typ Hersteller Farbe KW / PS Auto *next Klasse Auto Nutzdaten Pointer auf nächstes Objekt Lege neues Objekt an Typ Hersteller Farbe KW / PS Auto *next Typ Hersteller Farbe KW / PS Auto *next Auto *start Auto *ende Auto *temp Typ Hersteller Farbe KW / PS Auto *next = NULL Folgende Erweiterungsmöglichkeiten wären denkbar. 1. Erweiterung der Klasse mit dem Pointer previous (vorheriger Knoten) (Hier rot dargestellt) Auto *prev = NULL Auto *prev Pointer auf vorheriges Objekt
23
Typ Hersteller Farbe KW / PS Auto *next Klasse Auto Nutzdaten Pointer auf nächstes Objekt Lege neues Objekt an Typ Hersteller Farbe KW / PS Auto *next Typ Hersteller Farbe KW / PS Auto *next Auto *start Auto *ende Auto *temp Typ Hersteller Farbe KW / PS Auto *next = NULL Auto *prev = NULL Eine weitere Erweiterungsmöglichkeit wäre danach: Ein Löschen einzelner Knoten Auto *prev Pointer auf vorheriges Objekt
24
Typ Hersteller Farbe KW / PS Auto *next Klasse Auto Nutzdaten Pointer auf nächstes Objekt Lege neues Objekt an Typ Hersteller Farbe KW / PS Auto *next Typ Hersteller Farbe KW / PS Auto *next Auto *start Auto *ende Auto *temp Typ Hersteller Farbe KW / PS Auto *next = NULL Auto *prev = NULL 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
25
Typ Hersteller Farbe KW / PS Auto *next Klasse Auto Nutzdaten Pointer auf nächstes Objekt Lege neues Objekt an Typ Hersteller Farbe KW / PS Auto *next Typ Hersteller Farbe KW / PS Auto *next Auto *start Auto *ende Auto *temp Typ Hersteller Farbe KW / PS Auto *next = NULL Auto *prev = NULL Eine weitere Erweiterungsmöglichkeit wäre danach: Ein Einfügen eines Knoten an eine bestimmte Stelle. Hier grün eingefärbt. Auto *prev Pointer auf vorheriges Objekt Typ Hersteller Farbe KW / PS Auto *next Auto *prev
26
Typ Hersteller Farbe KW / PS Auto *next Klasse Auto Nutzdaten Pointer auf nächstes Objekt Lege neues Objekt an Typ Hersteller Farbe KW / PS Auto *next Typ Hersteller Farbe KW / PS Auto *next Auto *start Auto *ende Auto *temp Typ Hersteller Farbe KW / PS Auto *next = NULL Auto *prev = NULL Eine weitere Erweiterungsmöglichkeit wäre danach: Das Ändern der Nutzdaten eines Knoten an eine bestimmte Stelle. Hier grün eingefärbt. Auto *prev Pointer auf vorheriges Objekt
27
Typ Hersteller Farbe KW / PS Auto *next Klasse Auto Nutzdaten Pointer auf nächstes Objekt Lege neues Objekt an Typ Hersteller Farbe KW / PS Auto *next Typ Hersteller Farbe KW / PS Auto *next Auto *start Auto *ende Auto *temp Typ Hersteller Farbe KW / PS Auto *next = NULL Auto *prev = NULL Auto *prev Pointer auf vorheriges Objekt Eine weitere Erweiterungsmöglichkeit wäre danach: Das Tauschen zweier Knoten bzw. derer Knoten Hier grün eingefärbt.
28
Erweiterungsmöglichkeiten Sortierstartpointer Sortierendepointer Sortierpreviouspointer in der Klasse Sortiernextpointer in der Klasse
Ähnliche Präsentationen
© 2025 SlidePlayer.org Inc.
All rights reserved.