Einfach verkettete Liste
|
|
|
- Jakob Pohl
- vor 8 Jahren
- Abrufe
Transkript
1 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 Verweis auf das zu speichernde Objekt und einen Verweis auf das nächste Hilfsobjekt in der Liste. Das die Liste repräsentierende Objekt enthält wiederum zwei Verweise: Einen Verweis auf das Hilfsobjekt zum ersten Listenelement und einen Verweis auf das Hilfsobjekt zum letzten Listenelement. first last Peter Becker, Datenstrukturen und Algorithmen Hochschule Bonn-Rhein-Sieg, SS
2 5. Listen Verkettete Listen Implementierungsansatz: Verkettete Liste first und last enthalten zu Anfang die Nullreferenz (null), dies entspricht einer leeren Warteschlange. public class Warteschlange<T> {... private class Item { T value; Item next; first private Item first = null; private Item last = null;... last Peter Becker, Datenstrukturen und Algorithmen Hochschule Bonn-Rhein-Sieg, SS
3 5. Listen Verkettete Listen void enqueue(t elem) Wir legen ein Hilfsobjekt an. Wenn die Warteschlange bisher leer ist, lassen wir first und last auf das Hilfsobjekt verweisen. Andernfalls müssen wir das neue Hilfsobjekt hinten an die Liste hängen. Item item = new Item(); item.next = null; item.value = elem; if ( last == null ) { first = last = item; else { last.next = item; last = item; Peter Becker, Datenstrukturen und Algorithmen Hochschule Bonn-Rhein-Sieg, SS
4 5. Listen Verkettete Listen Beispiel: enqueue(45); enqueue(17); enqueue(22); enqueue(66); first last T front() Im Normalfall (first!= null) geben wir das Element des ersten Hilfsobjektes zurück: return first.value; Peter Becker, Datenstrukturen und Algorithmen Hochschule Bonn-Rhein-Sieg, SS
5 5. Listen Verkettete Listen void dequeue() Vorbedingung: Keine leere Liste Wir müssen nur first den Nachfolger von first zuweisen und dabei aufpassen, dass eine leere Warteschlange entstehen kann. first = first.next; if ( first == null ) { last = null; Beispiel: dequeue(); dequeue(); first last Peter Becker, Datenstrukturen und Algorithmen Hochschule Bonn-Rhein-Sieg, SS
6 5. Listen Verkettete Listen Man beachte, dass die nicht mehr referenzierten Hilfsobjekte später vom Garbage Collector gelöscht werden, so dass dann im Speicher der folgende Zustand entsteht: first last Logisch besteht zwischen den beiden Zuständen kein Unterschied. Peter Becker, Datenstrukturen und Algorithmen Hochschule Bonn-Rhein-Sieg, SS
7 5. Listen Verkettete Listen Effizienz mit verketteter Liste Alle Operationen können in Zeit O(1) ausgeführt werden. Es gibt keine Kapazitätsbeschränkung mehr. Die Größe der Liste und nur noch durch den zur Verfügung stehenden Arbeitsspeicher beschränkt. dynamische Datenstruktur Peter Becker, Datenstrukturen und Algorithmen Hochschule Bonn-Rhein-Sieg, SS
8 5. Listen Innere Klasse Exkurs: Innere Klassen in Java Es gibt in Java die Möglichkeit, eine Klasse innerhalb einer anderen Klasse zu definieren. Solche Klassen heißen innere Klassen. Klassen die nicht innerhalb einer anderen Klasse definiert sind, sind sogenannte Top- Level-Klassen. Warum innere Klassen? engere Bindung an die umgebende Klasse Alternative zum Paketsystem Hier keine vollständige Behandlung von inneren Klassen, Details siehe Java Lehrbücher Peter Becker, Datenstrukturen und Algorithmen Hochschule Bonn-Rhein-Sieg, SS
9 5. Listen Innere Klasse Arten von inneren Klassen Statische innere Klassen Elementklassen Lokale Klassen Anonyme innere Klassen Peter Becker, Datenstrukturen und Algorithmen Hochschule Bonn-Rhein-Sieg, SS
10 5. Listen Innere Klasse Statische Innere Klassen public class Aussen {... static class Innen { Innen ist die innere statische Klasse. Sie kann aufgebaut sein, wie eine übliche Klasse und innerhalb der inneren Klasse hat man Zugriff auf alle static-elemente der äußeren Klasse. Statische innere Klassen sind eigenständige Klassen. Eine Instanz der inneren statische Klasse ist unabhängig von den Instanzen der äußeren Klasse. Peter Becker, Datenstrukturen und Algorithmen Hochschule Bonn-Rhein-Sieg, SS
11 5. Listen Innere Klasse Erzeugung einer Instanz der inneren Klasse: Innerhalb von Aussen: new Innen(...); Außerhalb von Aussen: new Aussen.Innen(...); Die innere Klasse kann mit Modifikatoren für die Sichtbarkeit versehen werden (public, private). Statische innere Klassen bieten sich als Alternative zum Paketsystem an. Peter Becker, Datenstrukturen und Algorithmen Hochschule Bonn-Rhein-Sieg, SS
12 5. Listen Innere Klasse Elementklassen public class Aussen {... class Innen { Eine Instanz einer Elementklasse ist immer mit einer Instanz der äußeren Klasse verbunden, d.h. zu einem Innen-Objekt gibt es stets genau ein Aussen-Objekt. Elementklassen stellen somit Hilfsobjekte für Instanzen der äußeren Klasse bereit, siehe verkettete Liste. In der inneren Klasse können keine static-elemente deklariert werden. Von der inneren Klasse aus ist ein Zugriff auf alle Elemente der äußeren Klasse möglich, auch private-elemente. Peter Becker, Datenstrukturen und Algorithmen Hochschule Bonn-Rhein-Sieg, SS
13 5. Listen Innere Klasse Modifikatoren für die Sichtbarkeit der inneren Klasse sind möglich. Erzeugung einer Instanz der inneren Klasse: geschieht typischerweise innerhalb einer Instanzmethode der äußeren Klasse. Hierdurch entsteht implizit die Zuordnung der Instanz der inneren Klasse zu this. Ansonsten: Aussen aussen = new Aussen(...); aussen.new Innen(...); Zuordnung der inneren Instanz zu dem durch aussen referenzierten Objekt. Innerhalb der inneren Klasse bezeichnet this die Instanz von Innen. Wie kommt man an das umgebende Objekt? Aussen.this Peter Becker, Datenstrukturen und Algorithmen Hochschule Bonn-Rhein-Sieg, SS
14 5. Listen Innere Klasse Lokale Klassen Klassendefinitionen innerhalb von Blöcken, z.b. lokal innerhalb einer Methode. Keine Modifikatoren für die Sichtbarkeit erlaubt. Zugriff auf Methoden der äußeren Klasse, sowie auf Konstanten der umgebenden Methode oder Klasse. Keine große praktische Bedeutung. Peter Becker, Datenstrukturen und Algorithmen Hochschule Bonn-Rhein-Sieg, SS
15 5. Listen Innere Klasse Anonyme innere Klasse Objekterzeugung und Klassendefinition in einem Praktische Bedeutung bei der lokalen Definition von Objekten für die Implementierung von einfachen Schnittstellen. Siehe ActionListener-Beispiel in Kapitel 2 (auf der Homepage) Peter Becker, Datenstrukturen und Algorithmen Hochschule Bonn-Rhein-Sieg, SS
16 5. Listen Verkettete Listen Weitere Listenoperationen Für Listen gibt es viele weitere sinnvolle Operationen. Beispielsweise könnte man den sequentiellen schrittweisen Durchlauf durch eine Liste unterstützen. In der Instanzvariablen cursor merken wir uns die aktuelle Position in der Liste. void reset() Setzt den Cursor auf den Anfang der Liste. cursor = first; first cursor last Peter Becker, Datenstrukturen und Algorithmen Hochschule Bonn-Rhein-Sieg, SS
17 5. Listen Verkettete Listen T next() Setzt den Cursor eine Position weiter und liefert das entsprechende Listenelement zurück. cursor = cursor.next; return cursor.value; first cursor last Peter Becker, Datenstrukturen und Algorithmen Hochschule Bonn-Rhein-Sieg, SS
18 5. Listen Verkettete Listen void insert(t elem) Fügt hinter dem Cursor ein Listenelement ein. Item item = new Item(); item.value = elem; item.next = cursor.next; cursor.next = item; 11 first cursor last Zeitaufwand Einfügen: O(1) Peter Becker, Datenstrukturen und Algorithmen Hochschule Bonn-Rhein-Sieg, SS
19 5. Listen Verkettete Listen void remove() Löscht das Cursorlement. Hierfür benötigt man einen Verweis auf das Element vor dem Cursor. Dies kann man durch einen Durchlauf durch die Liste ermitteln (Zeitaufwand O(n)) oder man sieht einen weitere Instanzvariable pre vor, die immer auf das Element vor dem Cursor verweist. first pre cursor last pre muss dann natürlich bei den anderen Operationen entsprechend angepasst werden. Peter Becker, Datenstrukturen und Algorithmen Hochschule Bonn-Rhein-Sieg, SS
20 5. Listen Verkettete Listen pre.next = cursor.next; cursor = cursor.next; first pre cursor last Damit ist auch Löschen in O(1) möglich. Das gelöschte Element wird später vom Garbage Collector entsorgt. Peter Becker, Datenstrukturen und Algorithmen Hochschule Bonn-Rhein-Sieg, SS
21 5. Listen Verkettete Listen Doppelt verkettete Liste In einer doppelt verketteten Liste verweist jedes Listenelement nicht nur auf den Nachfolger sondern auch auf den Vorgänger. first last Dies erleichert z.b. das Löschen des aktuellen Elements (kein pre notwendig). Peter Becker, Datenstrukturen und Algorithmen Hochschule Bonn-Rhein-Sieg, SS
22 5. Listen Verkettete Listen void remove() Item pred = cursor.prev; // Vorgaengerelement Item succ = cursor.next; // Nachfolgerelement if (pred == null) { first = succ; else { pred.next = succ; if (succ == null) { last = pred; else { succ.prev = pred; // Das erste Element wird geloescht // Das letzte Element wird geloescht Peter Becker, Datenstrukturen und Algorithmen Hochschule Bonn-Rhein-Sieg, SS
23 5. Listen Verkettete Listen void insert(t elem) Hinter dem Cursor ein neues Element einfügen. Item item = new Item(); // neues Element Item succ = cursor.next; // Nachfolgerelement item.value = elem; item.next = succ; item.prev = cursor; cursor.next = item; if (succ == null) { last = item; else { succ.prev = item; // Einfuegen hinter dem letzten Element Analog ist natürlich auch ein Einfügen vor dem Cursor möglich. Peter Becker, Datenstrukturen und Algorithmen Hochschule Bonn-Rhein-Sieg, SS
24 5. Listen Amortisierte Laufzeitanalyse Wahlfreier Zugriff Alle bisher vorgestellten Listenoperationen sind mit doppelt verketteten Listen in Zeit O(1) implementierbar. Für die folgende Operation gilt dies nicht: T get(int i) Liefert das Element an der i-ten Stelle der Liste. Für eine Implementierung mit verketteten Listen beträgt der Zeitaufwand O(n), eine Implementierung mit Feldern hätte dagegen den Zeitaufwand O(1). Und wenn man nun get() sehr häufig benötigt? z.b. geschickte Größenanpassung des Feldes führt zu amortisierter Zeit O(1) beim Einfügen Peter Becker, Datenstrukturen und Algorithmen Hochschule Bonn-Rhein-Sieg, SS
25 5. Listen Amortisierte Laufzeitanalyse Dynamische Größenanpassung (1) Angenommen, es würde für eine Anwendung ausreichen, wenn eine Liste die Operationen enqueue() und get() unterstützt. Bei Implementierung mit Feld: Problem bei enqueue(), wenn das Feld für die Listenelemente vollständig gefüllt ist. Wir müssten dann ein größeres Feld erzeugen und alle Elemente in das neue Feld kopieren. Zeitaufwand: O(n) Angenommen, wir verdoppeln immer die Größe, wenn das Feld vollständig gefüllt ist. Welcher Gesamtaufwand entsteht dann? Peter Becker, Datenstrukturen und Algorithmen Hochschule Bonn-Rhein-Sieg, SS
26 5. Listen Amortisierte Laufzeitanalyse Dynamische Größenanpassung (2) public class Liste<T> { private T[] feld = (T[]) new Object[1]; private int size = 0; public void enqueue(t elem) { T[] neufeld; if (size >= feld.length) { neufeld = (T[]) new Object[2*feld.length]; for (int i=0 ; i<feld.length ; i++) { neufeld[i] = feld[i]; feld = neufeld;... feld[size] = elem; size++; Peter Becker, Datenstrukturen und Algorithmen Hochschule Bonn-Rhein-Sieg, SS
27 5. Listen Amortisierte Laufzeitanalyse Dynamische Größenanpassung (3) Der Gesamtaufwand für enqueue() entspricht der Gesamtlänge aller erzeugten Felder. Peter Becker, Datenstrukturen und Algorithmen Hochschule Bonn-Rhein-Sieg, SS
28 5. Listen Amortisierte Laufzeitanalyse Dynamische Größenanpassung (4) Es sei n die Anzahl der eingefügten Elemente (Länge der Liste). O.B.d.A. sei n eine Zweierpotzen, also n = 2 k. Dann gilt für die Gesamtlänge: Gesamtlänge = n + n 2 + n n 2 k = n( k) = n k ( 1 i=0 2 ) k Mit der Formel k i=0 x k = 1 xk+1 1 x Peter Becker, Datenstrukturen und Algorithmen Hochschule Bonn-Rhein-Sieg, SS
29 5. Listen Amortisierte Laufzeitanalyse können wir die Gesamtlänge abschätzen: Fazit: Gesamtlänge = n k ( 1 i=0 = n 1 ( ) k ) k+1 ( ( ) 1 k+1 ) = 2n 1 2 2n Der Gesamtzeitaufwand für das Einfügen von n Elementen beträgt O(n). Damit benötigt eine einzelne Einfügeoperation im Mittel Zeit O(1). Peter Becker, Datenstrukturen und Algorithmen Hochschule Bonn-Rhein-Sieg, SS
30 5. Listen Amortisierte Laufzeitanalyse Amortisierte Laufzeitanalyse Die durchgeführte Analyse ist eine sogenannte amortisierte Laufzeitanalyse. Bei der amortisierten Laufzeitanalyse betrachtet man die Kosten (Zeitaufwand) von Folgen von Operationen, nicht nur einer einzelnen Operation. Dividiert man den Zeitaufwand durch die Anzahl der Operationen, erhält man den durchschnittlichen Zeitaufwand pro Operation (Aggregat-Methode). Man beachte: Der durchschnittliche Zeitaufwand für ein einzelnes enqueue() ist nur O(1), obwohl der Zeitaufwand für ein einzelnes enqueue() im Worst-Case O(n) beträgt. Der Zeitaufwand für n-faches enqueue() beträgt ebenfalls nur O(n). Peter Becker, Datenstrukturen und Algorithmen Hochschule Bonn-Rhein-Sieg, SS
31 5. Listen Amortisierte Laufzeitanalyse Listen im Java-API Generische Klassen und Schnittstellen für Listen finden sich im Paket java.util. Generische Schnittstelle für Listen: List<T> Feldbasierte Implementierung: ArrayList<T> ArrayList nutzt eine dynamische Größenerweiterung des Feldes. Zitat aus der API- Dokumentation: Resizable-array implementation of the List interface. (...) The add operation runs in amortized constant time, that is, adding n elements requires O(n) time. Doppelt verkettete Liste: LinkedList<T> Ein kleiner Trick senkt etwas den Aufwand bei get(), hat aber keinen Einfluss auf die Größenordnung: Operations that index into the list will traverse the list from the beginning or the end, whichever is closer to the specified index. Peter Becker, Datenstrukturen und Algorithmen Hochschule Bonn-Rhein-Sieg, SS
ALP 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
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1
Kapitel 13 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1
Kapitel 12 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1 Kapitel 11 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 2 Ziele Implementierungen für
ALP 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
Verkettete 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).
1 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;
Einstieg 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
Einstieg in die Informatik mit Java
1 / 16 Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 16 1 Einführung 2 Element-Klassen 3 Lokale Klassen 4 Anonyme Klassen
Geschachtelte Klassen
Geschachtelte Klassen Christian Schamott 1 / 26 Übersicht Gemeinsamkeiten 4 Arten geschachtelte Klassen Elementklasse Lokale Klassen Anonyme Klassen Statisch geschachtelte Klassen Christian Schamott 2
12. Dynamische Datenstrukturen
Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Implementationsvarianten der verketteten Liste 0 04 Motivation: Stapel ( push, pop, top, empty
Schwerpunkte. 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
Grundlagen: 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
Konkatenation 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,
Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java
Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 13.06.07 G. Bohlender (IANM UNI Karlsruhe) Innere Klassen 13.06.07 1 / 11
4. Vererbung Die Klasse Object. Die Klasse Object
4. Vererbung Die Klasse Object Die Klasse Object Alle Klassen ohne explizit deklarierte Superklasse haben die Klasse Object als Superklasse. Object gehört zum Paket java.lang. Object verfügt über einige
13. 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
Einführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
6. 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
Problem: 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
Geschachtelte Klassen
Geschachtelte Klassen Die Programmiersprache Java bietet nicht nur die Möglichkeit innerhalb von Klassen Datenfelder und Methoden zu definieren, sondern auch Klassen. Solche Klassen heißen en geschachtelte
7. Sortieren Lernziele. 7. Sortieren
7. Sortieren Lernziele 7. Sortieren Lernziele: Die wichtigsten Sortierverfahren kennen und einsetzen können, Aufwand und weitere Eigenschaften der Sortierverfahren kennen, das Problemlösungsparadigma Teile-und-herrsche
Programmieren 2 Übung Semesterwoche 2
Programmieren 2 Übung Semesterwoche 2 1. Stack (LIFO: Last-In--First-Out) Implementieren und testen Sie eine Klasse Stack, so dass beliebig viele Objekte eines vorgegebenen Datentyps (z. B. String) auf
ADT: 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
Software Entwicklung 1
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Fallstudie: Lauftagebuch Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 21 Erstellen einer
Programmieren 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
JAVA KURS COLLECTION
JAVA KURS COLLECTION COLLECTIONS Christa Schneider 2 COLLECTION Enthält als Basis-Interface grundlegende Methoden zur Arbeit mit Collections Methode int size() boolean isempty() boolean contains (Object)
3. Ü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
Wiederholung: 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
Objektorientierte Programmierung. Kapitel 12: Interfaces
12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/
Algorithmen 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
Gliederung. 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
8. Hashing Lernziele. 8. Hashing
8. Hashing Lernziele 8. Hashing Lernziele: Hashverfahren verstehen und einsetzen können, Vor- und Nachteile von Hashing gegenüber Suchbäumen benennen können, verschiedene Verfahren zur Auflösung von Kollisionen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (12 Hashverfahren: Verkettung der Überläufer) Prof. Dr. Susanne Albers Möglichkeiten der Kollisionsbehandlung Kollisionsbehandlung: Die Behandlung
Grundkonzepte java.util.list
Grundkonzepte java.util.list Eine List ist eine Spezialisierung einer allgemeinen Ansammlung (Collection): Lineare Ordnung ist definiert Zugriff über Rang oder Position Volle Kontrolle wo eingefügt bzw.
Repetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen
! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 -
! 1. Rekursive Algorithmen! 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Ausdruck Ausdruck Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ Ausdruck ] ( Ausdruck
Advanced 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
Algorithmen 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
Einführung in die Programmierung mit Java
Einführung in die Programmierung mit Java Teil 14: Verkettete Listen Martin Hofmann Steffen Jost LFE Theoretische Informatik, Institut für Informatik, Ludwig-Maximilians Universität, München Stack 18.
Grundlagen 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.
Grundlagen: 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
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine
Stacks, 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
Verbund/Struktur (record/struct)
Arrays. Iteratoren. Verbund/Struktur (record/struct) Ein Verbund oder Struktur ist eine statische Datenstruktur Ein Verbund ist eine Menge von Elementen (meistens von unterschiedlichen Typen), die eine
Verkettete Listen. Implementierung von einfach verketteten Listen. Implementierung von doppelt verketteten Listen
Verkettete Listen Verwendung von Listen in Java Das Prinzip des Iterators Implementierung von einfach verketteten Listen Implementierung von doppelt verketteten Listen Informatik II: Objektorientierte
Info B VL 11: Innere Klassen/Collections
Info B VL 11: Innere Klassen/Collections Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 11: Innere Klassen/Collections
class ListElement { int value; ListElement next; ListElement() { next=null; value=0;
Listenimplementierung Übung 1, Aufgabe 4. c 2004 Evgeny Matusov, Thomas Deselaers Zunächst definieren wir die Basisklasse für die Listenelemente, die gleichzeitig einen Verweis auf weitere Listenelemente
Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:
Musterlösung Übung 7 Aufgabe 1 Sehen wir uns zu allererst das gegebene Forth Programm an: 0 3 new - list constant list1 list1 5 new - list constant list2 list1 6 new - list constant list3 list2 2 new -
Objektorientierte Programmierung. Kapitel 14: Interfaces
14. Interfaces 1/26 Objektorientierte Programmierung Kapitel 14: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2013/14 http://www.informatik.uni-halle.de/ brass/oop13/
FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen
5 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Referenzen Beispiel an der einfachen Klasse Walze: public class Walze { int id; public Walze(int id) { this.id = id; Verwenden
Algorithmen & Datenstrukturen Midterm Test 2
Algorithmen & Datenstrukturen Midterm Test 2 Martin Avanzini Thomas Bauereiß Herbert Jordan René Thiemann
7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen
7. Schnittstellen Grundlagen zu Schnittstellen 7. Schnittstellen Eine Schnittstelle (Interface) ist eine Spezifikation eines Typs in Form eines Typnamens und einer Menge von Methoden, die keine Implementierungen
Weitere Beispiele. Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts. 7. Schnittstellen. Schnittstelle: Syntax
Weitere Beispiele Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts public interface Funktion { boolean istimdefbereich(double x); double wert(double x); String gibbeschreibung(); public interface
Einführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Semestralklausur Einführung in die Programmierung Semestralklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList
Algorithmen und Datenstrukturen 2. Dynamische Datenstrukturen
Algorithmen und Datenstrukturen 2 Dynamische Datenstrukturen Algorithmen für dynamische Datenstrukturen Zugriff auf Variable und Felder durch einen Ausdruck: Namen durch feste Adressen referenziert Anzahl
Vorlesung 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
Praxis 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
Modularisierung in Java: Pakete Software Entwicklung 1
Modularisierung in Java: Pakete Software Entwicklung 1 Annette Bieniusa, Mathias Weber, Peter Zeller Um zusammengehörende Klassen, Interfaces, etc. gemeinsam zu verwalten, Sichtbarkeiten einzugrenzen und
Informatik II Prüfungsvorbereitungskurs
Informatik II Prüfungsvorbereitungskurs Tag 4, 9.6.2017 Giuseppe Accaputo [email protected] 1 Aufbau des PVK Tag 1: Java Teil 1 Tag 2: Java Teil 2 Tag 3: Algorithmen & Komplexität Tag 4: Dynamische Datenstrukturen,
Fragen zur OOP in Java
- 1 - Inhalt Was bedeutet OOP?... 2 Was versteht man unter einer Klasse?... 2 Wie nennt man die Mitglieder einer Klasse?... 2 Wie erzeugt man Objekte?... 2 Wie greife ich auf Member einer Klasse zu?...
Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing
Algorithmen I Tutorium 1-3. Sitzung Dennis Felsing [email protected] www.stud.uni-karlsruhe.de/~ubcqr/algo 2011-05-02 Überblick 1 Sortieren und Suchen 2 Mastertheorem 3 Datenstrukturen 4 Kreativaufgabe
Punkte. Teil 1. Teil 2. Summe. 1. Zeigen Sie, dass der untenstehende Suchbaum die AVL-Bedingung verletzt und überführen Sie ihn in einen AVL-Baum.
Hochschule der Medien Prof Uwe Schulz 1 Februar 2007 Stuttgart Klausur Informatik 2, EDV-Nr 40303/42022 Seite 1 von 2 Name: Matr Nr: Teil 1: Keine Hilfsmittel Bearbeitungszeit: 20 Minuten Teil 1 Teil 2
Informatik II Prüfungsvorbereitungskurs
Informatik II Prüfungsvorbereitungskurs Tag 4, 23.6.2016 Giuseppe Accaputo [email protected] 1 Programm für heute Repetition Datenstrukturen Unter anderem Fragen von gestern Point-in-Polygon Algorithmus Shortest
II.4.4 Exceptions - 1 -
n 1. Unterklassen und Vererbung n 2. Abstrakte Klassen und Interfaces n 3. Modularität und Pakete n 4. Ausnahmen (Exceptions) n 5. Generische Datentypen n 6. Collections II.4.4 Exceptions - 1 - Ausnahmen
Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik
Programmieren II Innere Klassen Heusch 10, 13.10 Ratz 5.2.1, 9.8 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Innere Klassen Bisher kennen wir nur Klassen, die entweder zusammen
Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke
Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen
3. Klassen Statische Komponenten einer Klasse. Klassenvariablen
Klassenvariablen Wir wollen die Zahl der instantiierten Studentenobjekte zählen. Dies ist jedoch keine Eigenschaft eines einzelnen Objektes. Vielmehr gehört die Eigenschaft zu der Gesamtheit aller Studentenobjekte.
Abstrakter 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
Informatik 11 Kapitel 2 - Rekursive Datenstrukturen
Fachschaft Informatik Informatik 11 Kapitel 2 - Rekursive Datenstrukturen Michael Steinhuber König-Karlmann-Gymnasium Altötting 15. Januar 2016 Folie 1/77 Inhaltsverzeichnis I 1 Datenstruktur Schlange
Einstieg in die Informatik mit Java
1 / 25 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 25 1 Die Philosophie 2 Definition
Java Einführung Collections
Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...
Klassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode:
Klassenvariablen Klassenmethoden Wir wollen die Zahl der instantiierten Studentenobjekte zählen. Dies ist jedoch keine Eigenschaft eines einzelnen Objektes. Vielmehr gehört die Eigenschaft zu der Gesamtheit
Übung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Kürzeste Wege, Heaps, Hashing Heute: Kürzeste Wege: Dijkstra Heaps: Binäre Min-Heaps Hashing:
Informatik II Übung 06. Benjamin Hepp 5 April 2017
Informatik II Übung 06 Benjamin Hepp [email protected] 5 April 2017 Nachbesprechung U5 5 April 2017 Informatik II - Übung 01 2 Nachbesprechung U5 1. Einfach verkettete Listen Keine Probleme 2.
Teil V. Generics und Kollektionen in Java
Teil V Generics und Überblick 1 Parametrisierbare Datenstrukturen in Java 2 Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 5 1 Parametrisierbare Datenstrukturen in Java Motivation für
AuD-Tafelübung T-B5b
6. Übung Sichtbarkeiten, Rekursion, Javadoc Di, 29.11.2011 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit 3 Stack und Heap Stack Heap 4 Blatt 6 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit
Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen
Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18
Einstieg in die Informatik mit Java
1 / 35 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 35 1 Grundlagen 2 Verdeckte Variablen 3 Verdeckte Methoden 4 Konstruktoren
II.4.5 Generische Datentypen - 1 -
1. Unterklassen und Vererbung 2. Abstrakte Klassen und Interfaces 3. Modularität und Pakete 4. Ausnahmen (Exceptions) 5. Generische Datentypen 6. Collections II.4.5 Generische Datentypen - 1 - Ähnliche
Programmieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik
Programmieren II Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz 9.6 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Abstrakte Klassen: Motivation Grundidee abstrakter Klassen:
Theorie zu Übung 8 Implementierung in Java
Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept
3 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
Counting - 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
