Vorlesung Datenstrukturen
|
|
- Sylvia Bretz
- vor 5 Jahren
- Abrufe
Transkript
1 Vorlesung Datenstrukturen Lineare Listen (2) Doppelt verkettete Listen Ringlisten, Stapel, Schlangen Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 175
2 Doppelt verkettete Listen Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 176
3 Motivation Problem Speziell beim Löschen eines Listenelements haben wir gesehen, dass es sich hierbei um eine Operation konstanter Laufzeit handelt, wenn das Vorgängerelement bekannt ist. Bisher konnten wir den Vorgänger eines bekannten Listenelementes jedoch nur bestimmen, wenn wir die Liste bis zum bekannten Listenelement sequentiell durchmustert haben. Abhilfe Dieser zusätzliche Aufwand an Rechenzeit lässt sich vermeiden, wenn wir die bisher bekannte Datenstruktur Liste so modifizieren, dass zusätzlich zum Verweis auf den Nachfolger eines Listenelements auch noch ein Verweis auf seinen Vorgänger erfolgt. Vorteil Somit lässt sich konkret für die Operation des Löschens eines Listenelements sein Vorgänger direkt bestimmen und wir haben pauschal lediglich eine Laufzeit von O(1) für das Löschen eines Listenelements. Des Weiteren lassen sich durch die Bidirektionalität der Verkettung der Datenstruktur Liste auch noch weitere typische Listenoperationen beschleunigen. Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 177
4 Typdefinition eines Listenelements struct node { node* ; // Verweis auf Vorgänger Elementtyp data; node* next; // Verweis auf Nachfolger }; data next Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 178
5 Listenkonstruktion Konstruktion des Listenkopfes In Ergänzung zur einfach verketteten Liste muss jetzt auch das Vorgängerelement mit dem Nullzeiger initialisiert werden. struct node { node* ; Elementtyp data; node* next; }; node* head = new node; head-> = 0; head->next = 0; head data next 0 0 Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 179
6 Einfügen am Listenanfang node* temp = new node; // Bereitstellen des Speicherplatzes head-> = temp; temp->next = head; temp-> = 0; /* Vorgänger des alten Listenkopfes muss auf das neue Element verweisen */ /* Nachfolger des neuen Elements muss auf den alten Listenkopf zeigen */ /* Vorgänger des neuen Elements wird der Nullzeiger zugewiesen */ head = temp; // eingefügtes Element ist neuer Listenkopf head temp data next data next 0 head Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 180
7 Einfügen am Listenende Voraussetzung Zeiger last auf letztes Listenelement existiert node* temp = new node; // Bereitstellen des Speicherplatzes temp-> = last; /* Vorgänger des neuen Listenelements ist das bisherige letzte Element */ last->next = temp; temp->next = 0; last = temp; /* Nachfolger des bisher letzten Elements ist das neue Listenelement */ /* Nachfolger des neuen Elements wird der Nullzeiger */ // eingefügtes Listenelement ist letztes last data next data next 0 last temp Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 181
8 Einfügen in Listenrumpf Voraussetzung Existenz eines Zeigers, der auf das Listenelement zeigt, hinter dem eingefügt werden soll temp = new node; // Bereitstellen des Speicherplatzes temp-> = ; /* Vorgänger des neuen Listenelements ist das Element, auf das verweist */ temp->next = ->next; /* Nachfolger des neuen Elements ist der Nachfolger des Elements */ ->next-> = temp; /* Nachfolger des Vorgängers des neuen ->next = temp; Elements wird das erzeugte Element */ // Element wird Nachfolger des Vorgängers data next data next data next temp Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 182
9 Beispielliste struct node { unsigned char data; node*, node* next; }; node* head = new node; head->data = 'A'; head-> = 0; node* last = head; // Erzeugen des Listenkopfs // Kopf besitzt keinen Vorgänger for ( int i = 1; i < 10; i++ ) { // Erzeugen des Listenrumpfs node* temp = new node; temp->data = 'A' + i; temp-> = last; // Verknüpfe erzeugtes Element mit Vorgänger last->next = temp; // Verknüpfe Vorgänger mit erzeugtem Element last = temp; // Merke erzeugtes Listenelement } last->next = 0; // Markiere Listenende Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 183
10 Löschen des Listenkopfs Voraussetzung Zu löschendes Element elem entspricht dem Listenkopf head Beachte Situation Potentielle Erzeugung der leeren Liste nach dem Löschen des Listenkopfes head = head->next; // Neuer Listenkopf ist Nachfolger des alten Kopfes if (head) // Wenn Liste nicht leer ist, dann head-> = 0; // Listenkopf hat keinen Vorgänger delete elem; // Belegten Speicherplatz freigeben!!! elem = 0; // Zeiger mit Nullzeiger initialisieren!!! head elem data next data next elem 0 head Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 184
11 Löschen des Listenendes Voraussetzung Zu löschendes Element elem entspricht dem letzten Listenelement Beachte Situation Potentielle Erzeugung der leeren Liste nach Löschen des letzten Elements node* = elem->; // Neues Listenende ist Vorgänger des alten if () // Wenn Liste nicht leer ist, dann ->next = 0; // Letztes Listenelement besitzt keinen Nachfolger delete elem; // Belegten Speicherplatz freigeben!!! elem = 0; // Zeiger mit Nullzeiger initialisieren!!! data next data next elem 0 elem Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 185
12 Löschen aus Listenrumpf Voraussetzung Der Zeiger elem verweist auf das zu löschende Listenelement, das jedoch nicht das erste oder letzte Element der Liste sein darf. node* = elem->; // Vorgänger des zu löschenden Listenelements node* next = elem->next; // Nachfolger des zu löschenden Listenelements ->next = next; // Nachfolger des Vorgängers wird der Nachfolger next-> = ; // Vorgänger des Nachfolgers wird der Vorgänger delete elem; // Belegten Speicherplatz freigeben!!! elem = 0; // Zeiger mit Nullzeiger initialisieren!!! data next data next data next elem next Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 186
13 Doppelt verkettete Listen Vorteil Wir haben durch Ergänzung der Struktur eines Listenelements um eine zusätzliche Zeigerkomponente die direkte Verbindung zu seinem Vorgänger realisiert. Mit Hilfe dieser doppelten Verkettung können wir durch eine Liste direkt bidirektional navigieren, womit einige typische Anwendungen auf Listen besser modellierbar und effizienter ausführbar werden. Nachteil Die Vorteile der doppelten Verkettung erkauft man sich auf Kosten des für die zusätzliche Komponente extra benötigten Speicherplatzes (je Listenelement). Des Weiteren sind auch die Verkettungsoperationen von Listenelementen bei Einfüge- und Löschoperationen umfangreicher und komplexer (und damit fehleranfälliger) geworden. Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 187
14 Ringlisten Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 188
15 Ringlisten Aufbau Der Nachfolger des letzten Elements einer Ringliste ist nicht der Nullzeiger sondern der Listenkopf. Deshalb besteht eine Ringliste grundsätzlich aus mindestens einem Element. Ringlisten können sowohl einfach als auch doppelt verkettet sein. data next data next data next Vorteile Es wird nur noch ein Zeiger auf ein beliebiges Listenelement benötigt, um alle Listenelemente adressieren zu können. Einfüge- und Löschoperationen können vereinfacht werden, denn es muss nicht mehr unterschieden werden, an welcher Listenposition die Operation stattfindet. Bestimmte Probleme können adäquat mit Hilfe einer Ringliste modelliert werden. Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 189
16 Problem des Josephus Legende Josephus Flavius war ein berühmter jüdischer Historiker des ersten Jahrhunderts. Während des Jüdisch-Römischen Krieges wurden er und seine Begleiter von römischen Soldaten umzingelt und in einer Höhle eingeschlossen. Nach der Legende entschieden sich die Juden, sich lieber selbst zu töten als in Gefangenschaft zu geraten. Sie bildeten deshalb einen Kreis und die jeweils dritte Person im Kreis sollte getötet werden, so lange bis nur noch einer übrig blieb, der nach dem Willen der Gruppe Selbstmord begehen sollte. Josephus hatte allerdings nicht die Absicht zu sterben. So fand er schnell die einzig sichere Position im Kreis und blieb deshalb am Leben. Modellierung mit Ringliste Welches Element aus einer zirkulären Liste von N Elementen bleibt nach der wiederholten Entfernung des jeweils M-ten Elements übrig? Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 190
17 Problem des Josephus N=8, M= Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 191
18 Listen - Zusammenfassung (1) Vorteile Listen belegen nur so viel Speicherplatz, wie zur Speicherung der in ihnen enthaltenen Elemente tatsächlich benötigt wird neue Elemente können während der Laufzeit beliebig hinzugefügt werden existierende Listenelemente können jederzeit gelöscht werden die Größe von Listen (Elementanzahl) wird nur durch den verfügbaren Speicherplatz begrenzt Einfügen eines Elements ist prinzipiell in O(1) möglich Entfernen eines Elements ist prinzipiell in O(1) möglich Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 192
19 Listen - Zusammenfassung (2) Nachteile auf einzelne Listenelemente kann nicht wahlfrei sondern nur navigierend über den jeweiligen Vorgänger oder Nachfolger (nur bei doppelter Verkettung) des selektierten Listenelements zugegriffen werden Die Suche benötigt (auch für sortierte Listen) immer eine Zeitkomplexität von O(n). Für Einfüge und Löschoperationen ist evtl. eine vorherige Durchmusterung der Liste nötig, um die Einfüge- bzw. Löschposition zu bestimmen O(n) Selbstprogrammierte Listen tendieren zu hoher Fehleranfälligkeit bei Verkettungsoperationen Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 193
20 Stapel und Schlangen Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 194
21 Stapel und Schlangen Motivation Für viele Anwendungsgebiete wird die komplette Funktionalität, die Datenstrukturen wie Felder oder Listen bieten, gar nicht benötigt. Konsequenz Ziel Einschränkung der selektierenden oder ändernden Zugriffsmöglichkeiten auf Datenstrukturen. Durch die Beschränkung der durchführbaren Operationen lassen sich Datenstrukturen einfacher und problemgerechter implementieren. Beispiele Ein Stapel (auch als Keller oder Stack bezeichnet) ist eine Datenstruktur, die eine Menge von Daten aufnehmen und in umgekehrter Reihenfolge wieder abgeben kann. Eine Schlange (auch als Queue bezeichnet) ist eine Datenstruktur, die eine Menge von Daten aufnehmen und diese in der Reihenfolge des Einfügens wieder abgeben kann. Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 195
22 Stapel Funktionen Eine Stapel-Datenstruktur kennt im Wesentlichen nur zwei Operationen: push pop Ablegen eines Elements auf dem Stapel Entnehmen des zuletzt abgelegten Elements vom Stapel Zuletzt eingefügte Elemente werden also zuerst wieder entnommen. Diese Art des Vorgehens wird auch als LIFO-Prinzip bezeichnet (Last In, First Out) Implementierung mit Liste Operationen zum Ablegen und Entnehmen eines Elements müssen auf dasselbe Listenende beschränkt werden. Beispiel (aus der Realwelt) Stapel Kaffeebecher in der Mensa Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 196
23 Stapel: Implementierung Vorbemerkung Zu einem späteren Zeitpunkt wird die Datenstruktur Stapel detailliert besprochen. An dieser Stelle erfolgt nur eine beispielhafte Demonstration einer möglichen Implementierung der Basisfunktionen mit Hilfe einer via head adressierten Liste. push Aufgrund der LIFO-Elementverarbeitung der Datenstruktur Stapel bietet sich zur Ablage das aus V3 bekannte Einfüge- verfahren am Listenanfang an: pop Da sich das zuletzt eingefügte Element am Listenkopf befindet, müssen wir dieses löschen und den Listenkopf entsprechend modifizieren: node* temp = new node; temp->next = head; head = temp; node* temp = head; head = head->next; delete temp; temp = 0; Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 197
24 Schlangen Funktionen Auch die Datenstruktur Schlange kennt nur zwei wesentliche Funktionen: enqueue dequeue Einfügen eines Elements an das Ende der Schlange Entfernen eines Elements vom Anfang der Schlange Eingefügte Elemente werden also in der Reihenfolge ihres Einfügens wieder entfernt. Dies wird auch als FIFO-Prinzip bezeichnet (First In, First Out) Realisierung mit Liste Bei Implementierung einer Schlange mit Hilfe einer Listenstruktur müssen die Operationen zum Ablegen und Entnehmen eines Elements auf die jeweils entgegengesetzten Listenenden beschränkt werden. Beispiel (aus der Realwelt) Schlange an der Essenausgabe in der Mensa Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 198
25 Schlange: Implementierung Vorbemerkung Analog der Datenstruktur Stapel erfolgt eine detaillierte Darstellung später. Anbei nur eine grobe Beispielimplementierung der zwei Grundoperationen auf Basis einer via head adressierten Liste. enqueue Wir fügen analog V2 am Listenende ein. Voraussetzung ist die Existenz eines Zeigers last auf das letzte Element der Liste head. dequeue Wir entnehmen das erste Element der Liste, löschen also am Listenanfang. dequeue entspricht daher der pop-funktion unserer Stapelimplementierung. node* temp = new node temp->next = 0; last->next = temp; last = temp; node* temp = head; head = head->next; delete temp; temp = 0; Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 199
26 Ende der Vorlesung Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 200
Vorlesung Datenstrukturen
Vorlesung Datenstrukturen Lineare Listen (1) Einfach verkettete Listen Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 148 Wiederholung Felder Vorteil Der Zugriff auf ein beliebiges
MehrVorlesung Datenstrukturen
Vorlesung Datenstrukturen Binärbaum Suchbaum Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 356 Datenstruktur Binärbaum Strukturrepräsentation des mathematischen Konzepts Binärbaum
Mehr5.3 Doppelt verkettete Listen
5.3 Doppelt verkettete Listen Einfach verkettete Listen unterstützen das Einfügen und Löschen am Anfang in konstanter Zeit; für das Einfügen und Löschen am Ende benötigen sie jedoch lineare Laufzeit Doppelt
MehrEinführung in die Objektorientierte Programmierung Vorlesung 18: Lineare Datenstrukturen. Sebastian Küpper
Einführung in die Objektorientierte Programmierung Vorlesung 18: Lineare Datenstrukturen Sebastian Küpper Unzulänglichkeit von Feldern Wenn ein Unternehmen alle Rechnungen eines Jahres verwalten möchte,
MehrALP II Dynamische Datenmengen Datenabstraktion
ALP II Dynamische Datenmengen Datenabstraktion O1 O2 O3 O4 SS 2012 Prof Dr Margarita Esponda M Esponda-Argüero 1 Dynamische Datenmengen Dynamische Datenmengen können durch verschiedene Datenstrukturen
MehrALP II Dynamische Datenmengen Datenabstraktion (Teil 2)
ALP II Dynamische Datenmengen Datenabstraktion (Teil 2) O1 O2 O3 O4 SS 2012 Prof. Dr. Margarita Esponda 49 Einfach verkettete Listen O1 O2 O3 50 Einführung Einfach verkettete Listen sind die einfachsten
MehrSpezielle Datenstrukturen
Spezielle Datenstrukturen Stapel (Stack) Beschreibung der Datenstruktur Stapel Ein Stapel (engl. Stack), auch Stapelspeicher oder Keller bzw. Kellerspeicher genannt, ist eine Datenstruktur, in der Daten
MehrAlgorithmen und Datenstrukturen 1
Algorithmen und Datenstrukturen 1 3. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de 3. Verkettete Listen, Stacks, Queues Verkettete lineare Listen -
MehrLogische Datenstrukturen
Lineare Listen Stapel, Warteschlangen Binärbäume Seite 1 Lineare Liste Begriffe first Funktion: sequentielle Verkettung von Datensätzen Ordnungsprinzip: Schlüssel Begriffe: first - Anker, Wurzel; Adresse
MehrTheoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke
Theoretische Informatik 1 WS 2007/2008 Prof. Dr. Rainer Lütticke Inhalt der Vorlesung Grundlagen - Mengen, Relationen, Abbildungen/Funktionen - Datenstrukturen - Aussagenlogik Automatentheorie Formale
Mehr12. Dynamische Datenstrukturen
Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Implementationsvarianten der verketteten Liste 0 04 Motivation: Stapel ( push, pop, top, empty
Mehr8 Elementare Datenstrukturen
Algorithmen und Datenstrukturen 186 8 Elementare Datenstrukturen In diesem und dem folgenden Kapitel werden grundlegende Techniken der Darstellung und Manipulation dynamischer Mengen auf Computern vorgestellt.
MehrAlgorithmen und Datenstrukturen (für ET/IT) Wiederholung: Ziele der Vorlesung. Wintersemester 2012/13. Dr. Tobias Lasser
Algorithmen und Datenstrukturen (für ET/IT) Wintersemester 2012/13 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Wiederholung: Ziele der Vorlesung Wissen: Algorithmische
MehrAbstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken.
Abstrakte Datentypen und Datenstrukturen/ Einfache Beispiele Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken. Datenstruktur (DS): Realisierung
Mehr12.3 Ein Datenmodell für Listen
Zweiter Versuch: Wir modellieren ein Element der Liste zunächst als eigenständiges Objekt. Dieses Objekt hält das gespeicherte Element. Andererseits hält das Element- Objekt einen Verweis auf das nächste
MehrAlgorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Wintersemester 2012/13 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Wiederholung: Ziele der Vorlesung Wissen: Algorithmische
MehrC- Kurs 09 Dynamische Datenstrukturen
C- Kurs 09 Dynamische Datenstrukturen Dipl.- Inf. Jörn Hoffmann jhoffmann@informaak.uni- leipzig.de Universität Leipzig InsAtut für InformaAk Technische InformaAk Flexible Datenstrukturen Institut für
Mehr16. Dynamische Datenstrukturen
Datenstrukturen 6. Dynamische Datenstrukturen Eine Datenstruktur organisiert Daten so in einem Computer, dass man sie effizient nutzen kann. Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange
MehrDatenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik
5. Datenstrukturen Motivation Datenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik Eine Datenstruktur speichert gegebene Daten und stellt auf diesen bestimmte Operationen
MehrADS: Algorithmen und Datenstrukturen
ADS: Algorithmen und Datenstrukturen Teil π Peter F. Stadler & Konstantin Klemm Bioinformatics Group, Dept. of Computer Science & Interdisciplinary Center for Bioinformatics, University of Leipzig Oct
MehrOrganisatorisches. Algorithmen und Datenstrukturen (für ET/IT) Programm heute. Definition Feld. Definition Feld
Organisatorisches Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 208 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München TUMonline-Einträge: Vorlesung https://campus.tum.de/tumonline/wblv.
MehrListen. Für die Verarbeitung von Listen durch den Rechner ist relevant:
Listen Für die Verarbeitung von Listen durch den Rechner ist relevant: Anzahl der Listenelemente - beim erstmaligen Erstellen der Liste bekannt/unbekannt - stabil vs. wechselhaft - Existenz eines Maximalwerts
MehrWiederholung: Zusammenfassung Felder. Algorithmen und Datenstrukturen (für ET/IT) Definition Abstrakter Datentyp. Programm heute
Wiederholung: Zusammenfassung Felder Algorithmen und Datenstrukturen (für ET/IT) Wintersemester / Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Ein Feld A kann repräsentiert
MehrVorlesung Datenstrukturen
Vorlesung Datenstrukturen Heaps Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 469 Prioritätswarteschlange Problem Häufig ist das Prinzip einer einfachen Warteschlangen-Datenstruktur
MehrProgramm heute. Algorithmen und Datenstrukturen (für ET/IT) Feld als sequentielle Liste. Definition Feld
Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 205 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Einführung 2 Grundlagen von Algorithmen
MehrAlgorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2016 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute 1 Einführung 2 Grundlagen von Algorithmen
Mehr13. Dynamische Datenstrukturen
Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Sortierte Liste 40 40 Motivation: Stapel ( push, pop, top, empty ) Wir brauchen einen neuen
MehrSchwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen
Schwerpunkte 7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Vergleich: Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++): über Datenstrukturen
Mehr7. Verkettete Strukturen: Listen
7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Version: 4. Jan. 2016 Vergleich: Schwerpunkte Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++):
MehrDr. Monika Meiler. Inhalt
Inhalt 13 Listen und Bäume...13-2 13.1 Einfach verkettete lineare Listen...13-2 13.1.1 Vorbetrachtungen zum Programm... 13-2 13.1.2 Programm zum Sortierroblem... 13-4 13.2 Standardoerationen für einfach
MehrVorlesung Datenstrukturen
Vorlesung Datenstrukturen Graphen (1) Darstellung Traversierung Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 441 Generalisierung von Bäumen Verallgemeinerung (von Listen zu Graphen)
MehrGrundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny
Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.
Mehr11. Elementare Datenstrukturen
11. Elementare Datenstrukturen Definition 11.1: Eine dynamische Menge ist gegeben durch eine oder mehrer Mengen von Objekten sowie Operationen auf diesen Mengen und den Objekten der Mengen. Dynamische
MehrStand der Vorlesung. Vergleich verkettete Liste und sequentielle Liste
Stand der Vorlesung Kapitel 5 Elementare Datenstrukturen Felder: Folge gleichartiger Elemente Repräsentiert als statische Liste, sequentiell verwaltete Elemente Feste Länge, statische Struktur Direkter
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. (Sortierte) Listen 2. Stacks & Queues 3. Datenstrukturen 4. Rekursion und vollständige Induktion
MehrTechnische Universität München
Stand der Vorlesung Kapitel 5 Elementare Datenstrukturen Felder: Folge gleichartiger Elemente Repräsentiert als statische Liste, sequentiell verwaltete Elemente Feste Länge, statische Struktur Direkter
MehrLISTEN ALS ABSTRAKTE DATENTYPEN
LISTEN ALS ABSTRAKTE DATENTYPEN Listen Formal: Sei A eine geg. Menge von Datenelementen; Liste l = a 1 endliche Folge von Elementen aus A, mit n a 1 : Länge der Liste l : erstes Element von l (head) a
MehrLISTEN ALS ABSTRAKTE DATENTYPEN
LISTEN ALS ABSTRAKTE DATENTYPEN Listen Formal: Sei A eine geg. Menge von Datenelementen; Liste l = a 1 endliche Folge von Elementen aus A, mit n a 1 : Länge der Liste l : erstes Element von l (head) a
MehrVerkettete Listen (Linked Lists) Vorlesung 3
Verkettete Listen (Linked Lists) Vorlesung 3 Verkettete Listen Heute betrachten wir: Einfach verkettete Listen (singly linked lists) Doppelt verkettete Listen (doubly linked lists) Verkettete Listen Eine
Mehr1. Die rekursive Datenstruktur Liste
1. Die rekursive Datenstruktur Liste 1.6 Die Datenstruktur Stapel Ein Stack, auch Stapel oder Keller genannt, ist eine Datenstruktur, bei der die Elemente nur an einem Ende der Folge eingefügt bzw. gelöscht
Mehr3. Übungsblatt zu Algorithmen I im SoSe 2017
Karlsruher Institut für Technologie Prof. Dr. Jörn Müller-Quade Institut für Theoretische Informatik Björn Kaidel, Sebastian Schlag, Sascha Witt 3. Übungsblatt zu Algorithmen I im SoSe 2017 http://crypto.iti.kit.edu/index.php?id=799
Mehr1 Abstrakte Datentypen
1 Abstrakte Datentypen Spezifiziere nur die Operationen! Verberge Details der Datenstruktur; der Implementierung der Operationen. == Information Hiding 1 Sinn: Verhindern illegaler Zugriffe auf die Datenstruktur;
MehrAdvanced Programming in C
Advanced Programming in C Pointer und Listen Institut für Numerische Simulation Rheinische Friedrich-Wilhelms-Universität Bonn Oktober 2013 Überblick 1 Variablen vs. Pointer - Statischer und dynamischer
MehrGrundlagen: Algorithmen und Datenstrukturen
Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2010
MehrKapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2017/18. Pro f. Dr. Sán do r Fe k e te
Kapitel 4: Dynamische Datenstrukturen Algorithmen und Datenstrukturen WS 2017/18 Pro f. Dr. Sán do r Fe k e te 1 4.1 Grundoperationen Aufgabenstellung: 3 4.1 Grundoperationen Aufgabenstellung: Verwalten
MehrNachtrag: Vergleich der Implementierungen von Stack
Nachtrag: Vergleich der Implementierungen von Stack In der letzten Vorlesung hatten wir zwei Implementierung der Klasse Stack: eine Implementierung als Liste (Array): liststack eine Implementierung als
MehrAlgorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2014 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München 2 Programm heute 1 Einführung 2 Grundlagen von Algorithmen
MehrAlgorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2014 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München 2 Programm heute 1 Einführung 2 Grundlagen von Algorithmen
MehrFallstudie: Online-Statistik
Fallstudie: Online-Statistik Ziel: Klasse / Objekt, welches Daten konsumiert und zu jeder Zeit Statistiken, z.b. Mittelwert, Varianz, Median (etc.) ausgeben kann Statistics s = new Statistics(maxSize);...
MehrAlgorithmen und Datenstrukturen Abstrakte Datentypen. M. Herpers, Y. Jung, P. Klingebiel
Algorithmen und Datenstrukturen Abstrakte Datentypen M. Herpers, Y. Jung, P. Klingebiel 1 Lernziele Die abstrakten Datentypen Stapel, Warteschlange und Liste sind bekannt und können angewendet werden Listen
MehrAbiturprüfung Informatik, Grundkurs
Seite 1 von 6 Abiturprüfung 2008 Informatik, Grundkurs Aufgabenstellung: Bei Warteschlangen kommt es häufig vor, dass einige Elemente aus berechtigten Gründen nicht am Ende der Schlange eingefügt werden
MehrVerkettete Datenstrukturen: Listen
Verkettete Datenstrukturen: Listen 2 Listen Formal: Liste = endliche Folge von Elementen [a 1, a 2,..., a n ]. Spezialfall: leere Liste [ ]. Länge einer Liste = Anzahl der Elemente (bei leerer Liste: 0).
MehrContainerDatenstrukturen. Große Übung 4
ContainerDatenstrukturen Große Übung 4 Aufgabenstellung Verwalte Kollektion S von n Objekten Grundaufgaben: Iterieren/Auflistung Suche nach Objekt x mit Wert/Schlüssel k Füge ein Objekt x hinzu Entferne
MehrKlausur Kompaktkurs Einführung in die Programmierung Dr. T. Weinzierl & M. Sedlacek 25. März 2011
Kompaktkurs Einführung in die Programmierung Klausur Seite 1/10 Name, Vorname, Unterschrift: Matrikelnummer: Wichtig: Klausur Kompaktkurs Einführung in die Programmierung Dr. T. Weinzierl & M. Sedlacek
MehrInformatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 6 (14.5.2014) Abstrakte Datentypen, Einfache Datenstrukturen Algorithmen und Komplexität Abstrakte Datentypen : Beispiele Dictionary: (auch:
MehrProgramm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Feld. Feld als sequentielle Liste
Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 204 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Einführung 2 Grundlagen von Algorithmen
MehrADT: Verkettete Listen
ADT: Verkettete Listen Abstrakter typ - Definition public class Bruch int zaehler, nenner; public Bruch(int zaehler, int nenner) this.zaehler = zaehler; this.nenner = nenner; Konstruktor zum Initialisieren
MehrGrundlagen der Informatik
Grundlagen der Informatik Musterklausur 1. Dynamische Datenstrukturen und objektorientierte Programmierung Zur Verwaltung einer digitalen Fotogalerie sollen Techniken der objektorientierten Programmierung
MehrCounting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit
Counting-Sort Counting - Sort ( A,B,k ). for i to k. do C[ i]. for j to length[ A]. do C[ A[ j ] C[ A[ j ] +. > C[ i] enthält Anzahl der Elemente in 6. for i to k. do C[ i] C[ i] + C[ i ]. > C[ i] enthält
MehrListen. Prof. Dr. Christian Böhm. in Zusammenarbeit mit Gefei Zhang. WS 07/08
Listen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang http://www.dbs.ini.lmu.de/lehre/nfinfosw WS 07/08 2 Ziele Standardimplementierungen für Listen kennenlernen Listeniteratoren verstehen
MehrDatentypen. strukturierte. elementare. skalare reelle statische dynamische int. list. real float. set. record. inhomogen. homogen
Datentypen elementare strukturierte skalare reelle statische dynamische int real float list homogen set inhomogen record Der elementare Datentyp nat bestehend aus einer Objektmenge und den darauf definierten
MehrListen. M. Jakob. 20. September Gymnasium Pegnitz
Listen M. Jakob Gymnasium Pegnitz 20. September 2015 Inhaltsverzeichnis 1 Hinführung: Wartenschlangen (6 Std.) 2 Grundprinzip von Listen Rekursion (10 Std.) 3 Die einfach verkettete Liste als Kompositum
MehrKonkatenation zweier Listen mit concat
Ein Datenmodell für Listen Konkatenation zweier Listen mit concat Was ist an der Konkatenation etwas unschön? Man muss die vordere Liste einmal durchgehen, um den letzten Nachfolger (urspr. null zu erhalten,
MehrProgrammieren I. Kapitel 13. Listen
Programmieren I Kapitel 13. Listen Kapitel 13: Listen Ziel: eigene Datenstrukturen erstellen können und eine wichtige vordefinierte Datenstruktur( familie) kennenlernen zusammengehörige Elemente zusammenfassen
MehrVorlesung Informatik 2 Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 Elementare Datenstrukturen) Prof. Dr. Susanne Albers Lineare Listen (1) Lineare Anordnung von Elementen eines Grundtyps (elementarer Datentyp
MehrProgrammieren in C. Rekursive Strukturen. Prof. Dr. Nikolaus Wulff
Programmieren in C Rekursive Strukturen Prof. Dr. Nikolaus Wulff Rekursive Strukturen Häufig müssen effizient Mengen von Daten oder Objekten im Speicher verwaltet werden. Meist werden für diese Mengen
MehrPraxis der Programmierung
Dynamische Datentypen Institut für Informatik und Computational Science Universität Potsdam Henning Bordihn Einige Folien gehen auf A. Terzibaschian zurück. 1 Dynamische Datentypen 2 Dynamische Datentypen
MehrADT: Verkettete Listen
ADT: Verkettete Listen Motivation I public class Bruch{ int zaehler, nenner; public Bruch(int zaehler, int nenner) { this.zaehler= zaehler; this.nenner = nenner; Konstruktor zum Initialisieren der Werte
MehrDatenstrukturen. Mariano Zelke. Sommersemester 2012
Datenstrukturen Mariano Zelke Sommersemester 2012 Kapitel 3: Elementare Datenstrukturen Mariano Zelke Datenstrukturen 2/18 Einfach verkettete Listen Mariano Zelke Datenstrukturen 3/18 Eine Zeiger-Implementierung
MehrInformatik II, SS 2016
Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 10 (27.5.2016) Binäre Suchbäume II Algorithmen und Komplexität Zusätzliche Dictionary Operationen Dictionary: Zusätzliche mögliche Operationen:
Mehr1. Die rekursive Datenstruktur Liste
1. Die rekursive Datenstruktur Liste 1.4 Methoden der Datenstruktur Liste Die Warteschlange (Queue) ist ein Sonderfall der Datenstruktur Liste. Bei der Warteschlange werden Einfügen und Entfernen nach
MehrAlgorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Wintersemester 2012/13 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Feedback Vielen Dank für das Feedback auf Moodle! Bitte
Mehr5. Strukturen und Algorithmen
5. Strukturen und Algorithmen Struktur 5.1 Modellierung allgemein Element Kabel1 Lampe Kabel2 Objekte der Struktur Struktur -> Klasse Element -> Klasse Datenstruktur Dr. Norbert Spangler / Grundlagen der
MehrEinfach verkettete Liste
5. Listen Verkettete Listen Einfach verkettete Liste Für jedes einzelne Element der Liste wird ein Hilfsobjekt erzeugt. Jedes Hilfsobjekt enthält zwei Instanzvariablen: den zu speichernden Wert bzw. einen
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine
MehrTeil 8: Dynamische Speicherverwaltung. Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden
Teil 8: Dynamische Speicherverwaltung Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden Inhaltsverzeichnis 8 Dynamische Speicherverwaltung... 3 8.1
MehrAnwendungsbeispiel MinHeap
Anwendungsbeispiel MinHeap Uns seien n ganze Zahlen gegeben und wir möchten darin die k größten Zahlen bestimmen; zudem gelten, dass n deutlich größer als k ist Wir können das Problem mit Laufzeit in O(n
MehrAlgorithmen I. Sascha Witt Institut für Theoretische Informatik Web: https://crypto.iti.kit.edu/index.php?id=799
Algorithmen I Sascha Witt 10.05.2017 Institut für Theoretische Informatik Web: https://crypto.iti.kit.edu/index.php?id=799 (Folien von Peter Sanders) KIT Institut für Theoretische Informatik 1 Erinnerung
MehrÜbungsblatt 6: Softwareentwicklung I (WS 2006/07)
Prof. Dr. A. Poetzsch-Heffter Dipl.-Inform. J.O. Blech Dipl.-Inform. M.J. Gawkowski Dipl.-Inform. N. Rauch Technische Universität Kaiserslautern Fachbereich Informatik AG Softwaretechnik Übungsblatt 6:
MehrAlgorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing
Algorithmen I Tutorium 1-3. Sitzung Dennis Felsing dennis.felsing@student.kit.edu www.stud.uni-karlsruhe.de/~ubcqr/algo 2011-05-02 Überblick 1 Sortieren und Suchen 2 Mastertheorem 3 Datenstrukturen 4 Kreativaufgabe
MehrDatenstrukturen, Listen und Bäume
Inhalt: Datenstrukturen, Listen und Bäume Datenstrukturen Definition und Arten Dynamische lineare Datenstrukturen: lineare, verkettete Liste Nichtlineare dynamische Datenstrukturen: Binärbaum Die Umsetzung
MehrGliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen
Gliederung 5. Compiler 1. Struktur eines Compilers 2. Syntaxanalyse durch rekursiven Abstieg 3. Ausnahmebehandlung 4. Arrays und Strings 6. Sortieren und Suchen 1. Grundlegende Datenstrukturen 2. Bäume
MehrStruktur am Beispiel einer Liste
Struktur am Beispiel einer 1 Einfügen(neues element ) Aktiv Wartend knoten knoten 2 Einfügen(neues element ) Aktiv Wartend knoten knoten 3 Einfügen(neues element ) Aktiv Wartend knoten knoten 4 Aha, ich
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Sortierte Listen 2. Stacks & Queues 3. Teile und Herrsche Nächste Woche: Vorrechnen (first-come-first-served)
MehrStacks, Queues & Bags. Datenstrukturen. Pushdown/Popup Stack. Ferd van Odenhoven. 19. September 2012
, Queues & Ferd van Odenhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering 19. September 2012 ODE/FHTBM, Queues & 19. September 2012 1/42 Datenstrukturen Elementare Datenstrukturen
MehrProblem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um. Dynamische Anpassung der Größe
Maximale Größe?! Problem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um Dynamische Anpassung der Größe Praktische Informatik I, HWS 2009, Kapitel 10 Seite
MehrListen. M. Jakob. Gymnasium Pegnitz. 20. September Hinführung: Wartenschlangen. Grundprinzip von Listen Rekursion
M. Jakob Gymnasium Pegnitz 20. September 2015 Inhaltsverzeichnis Grundprinzip von Rekursion (10 Std.) Die einfach verkettete Liste als Kompositum (10 Std.) Klasse LISTENELEMENT? Entwurfsmuster Kompositum
MehrEinstieg in die Informatik mit Java
1 / 15 Einstieg in die Informatik mit Java Collections Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 15 1 Überblick Collections 2 Hierarchie von Collections 3 Verwendung
MehrInformatik 1 ( ) D-MAVT F2010. Rekursion, Signaturen. Yves Brise Übungsstunde 8
Informatik 1 (251-0832-00) D-MAVT F2010 Rekursion, Signaturen Nachbesprechung Blatt 6 Aufgabe 1 - Strukturen und Zeiger Genau die Variablen angeben, die sich geändert haben. Implizite Initialisierung ergänzt
MehrEinführung in die Informatik 2
Einführung in die Informatik 2 Listen & Bäume Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 SvenKosub@uni-konstanzde Sprechstunde: Freitag, 14:00-15:00 Uhr, onv Sommersemester
MehrBeispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5
Robert Elsässer Paderborn, den 15. Mai 2008 u.v.a. Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5 AUFGABE 1 (6 Punkte): Nehmen wir an, Anfang bezeichne in einer normalen
Mehr3 Dynamische Datenstrukturen
3 Dynamische Datenstrukturen Beispiele für dynamische Datenstrukturen sind Lineare Listen Schlangen Stapel Bäume Prof. Dr. Dietmar Seipel 128 Praktische Informatik I - Algorithmen und Datenstrukturen Wintersemester
MehrADT: Verkettete Listen
ADT: Verkettete Listen Abstrakter typ - Definition public class Bruch{ int zaehler, nenner; public Bruch(int zaehler, int nenner) { this.zaehler = zaehler; this.nenner = nenner; Konstruktor zum Initialisieren
Mehr6. Verkettete Strukturen: Listen
6. Verkettete Strukturen: Listen 5 K. Bothe, Inst. f ür Inf., HU Berlin, PI, WS 004/05, III.6 Verkettete Strukturen: Listen 53 Verkettete Listen : Aufgabe Vergleich: Arrays - verkettete Listen Listenarten
MehrAlgorithmen und Datenstrukturen Kapitel 4 Neue Datenstrukturen, besseres (?) Sortieren
Algorithmen und Datenstrukturen Kapitel 4 Neue Datenstrukturen, besseres (?) Sortieren Frank Heitmann heitmann@informatik.uni-hamburg.de 4. November 2015 Frank Heitmann heitmann@informatik.uni-hamburg.de
MehrSS10 Algorithmen und Datenstrukturen 2. Kapitel Fundamentale Datentypen und Datenstrukturen
SS10 Algorithmen und Datenstrukturen 2. Kapitel Fundamentale Datentypen und Datenstrukturen Martin Dietzfelbinger April 2010 FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel 2 Datentyp
Mehr