Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Verkettete Liste Visualisierung. New-Operator Mit dem New-Operator kann zur Laufzeit (dynamisch) Speicherplatz reserviert und angelegt werden Vorteil:"—  Präsentation transkript:

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


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

Ähnliche Präsentationen


Google-Anzeigen