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

Slides:



Advertisements
Ähnliche Präsentationen
Einführung in die Programmiersprache C/C++
Advertisements

Imperative Programmierung
Vorbereitung: struct knoten { int x; struct knoten *l, *r; } *b, *bh, **bp; b: Zeiger auf Wurzel bh: Hilfszeiger bp: Zeiger auf Zeiger auf knoten b bp.
Klassen - Verkettete Liste -
Kapitel 3: Listen Lineare Liste: endliche Folge von Elementen eines Grundtyps (n>=0), leere Liste falls n=0 Listenelemente besitzen.
Seminar: "Einführung in C/C++" Einführung in die Programmiersprache C/C++ Donnerstag Andreas Döring SS 2004.
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
Dynamischer Speicher. Ein Vergleich aus dem täglichen Leben...
Ein Beispiel in Java.
Dynamisches Array als "verkettete Liste". Ein Vergleich.
Dynamischer Speicher und Struktur
Objekte werden als Adressen (Referenzen) übergeben. Dies führt manchmal zu unerwarteten Ergebnissen...
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
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.
Grafstat Ein Programm zum Erstellen von Fragebögen.
Arrays,Strings&Pointer in C/C++
Inhalt danach. inhalt danach inhalt danach inhalt danach inhalt danach inhalt danach.
Einfach verkettete Listen (OOP)
Guten Morgen! Was machen wir heute?
Wie erstelle ich einen Spielplan von unserer Homepage? Der Schlüssel liegt hinter dem Button Spiele, Ergebnisse Hier alle Spiele wählen. Hier das gewünschte.
Ich möchte gerne mehrere Bilder auf ein Folie
Wie man eine einfache Präsentation erstellt...
Willkommen bei Sycarus – dem Mathematikprogramm, das neue Wege geht.
Hallo zusammen, ich hab mal in einem Vortrag dieses "Einblenden und Abblenden" von Textpassagen gesehen, was mir ganz gut gefallen hat. Leider hab ich.
Auf Wunsch einer einzelnen Dame
Moin. Ich benutze PPT 2002 und möchte drei Bilder nacheinander 1
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Zum verständlich machen, wozu die Trigger-Funktion geeignet ist,
Repetitorium PG : Pointer FH-Darmstadt, FB Informatik.
Powerpoint 2010 Start Funker Panorama: Zuschauer auf der Elbbrücke beim Weinfest 2011 in Meißen.
Typo 3. INSTALLATION TYPO3 INSTALLTOOL EXTENSIONS UND TEMPLATES INSTALLATION TEMPLAVOILA USERMANAGEMENT Inhalt:
Efficient Alias Set Analysis Using SSA Form Proseminar Programmanalyse WS 11/12 André Hunke.
Einführung in die Programmiersprache C 4
DIE FARBEN.
Textfelder, Grafiken,... Schreibe als Untertitel:
Hallo, ich möchte eine Grafik1 aus einer anderen Grafik2
Ziel Ergebnis Anleitung zum Erstellen einer „Anzeigetafel“
wenn ich auf eine bestimmte Stelle auf einer Folie klicke
Wie man eine einfache Präsentation erstellt...
Vortrag: Visual Basic Neuerungen Autor : Dennis Hoyer
Einfach und doppelt verkettete Listen in JAVA by Jens Weibler
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Thomas Hilpold: Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger.
Thomas Negeli | Reference Counting I Folie 1 / 20 Seminar Garbage Collection | WS2005 Reference Counting I Negeli Thomas.
Erste Schritte in DELPHI
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
2.2.6 Verknüpfung von Personeneinträgen1 VERKNÜPFUNG VON PERSONENEINTRÄGEN Jedes mal, wenn Personennamen bei der Erfassung von Medien eingegeben werden,
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
C Tutorium – Memory Management – Knut Stolze. 2 Agenda Einführung in die Speicherverwaltung Stack vs. Heap Malloc Free Sizeof Tipps/Hinweise.
Dynamisches Array als "verkettete Liste". Ein Vergleich.
1 // Verkettete Liste 2 // demonstriert verkettete Listen und // Rekursion // (Einfügen am "Fuß") // #include struct Liste { int Element; Liste *weiter;
Excel-Tool: Beschwerdeanalyse  Folie 1 von Bitte Makros aktivieren Das Excel-Tool funktioniert nur mit eingeschalteten Makros. Eventuell erhalten.
Tutorium Software-Engineering SS14 Florian Manghofer.
Pointer, Arrays und verkettete Listen. Mehrdimensionale Arrays  Pointer auf ein Array von Pointern  int32 **matrix = new int32*[3];  matrix: Zeiger.
Temporäre Dateien von Browsern löschen Warum? Browser legen viele temporäre Dateien auf der Festplatte „C“ ab. Temporäre Dateien werden speziell für den.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Strukturen (Eigenschaften) Strukturen dienen zur Zusammenfassung mehrerer Komponenten verschiedener Typen zu einer Einheit, die dann mit gemeinsamen Namen.
Pointer. * und &  Bei der Definition int var1; ○ // „normale“ Variable int *var2; ○ // Zeiger auf einen Integer int *var2 = NULL; ○ // … incl. Initialisierung.
Anforderungen an die neue Datenstruktur
Zwei Denkansätze zur Klasse Schlange
Allgemeine Befehle für die allgemeine Liste
RGB-LED Projekt INGOLSTADT.
 Präsentation transkript:

Verkettete Liste Visualisierung

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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.

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

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

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

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

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

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.

Erweiterungsmöglichkeiten Sortierstartpointer Sortierendepointer Sortierpreviouspointer in der Klasse Sortiernextpointer in der Klasse