Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen

Größe: px
Ab Seite anzeigen:

Download "Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen"

Transkript

1 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 3. B-Bäume und Tries 4. Sortieren in Vektoren 5. Streuspeicherung 7. Graphen 1. Darstellung und Topologisches Sortieren 2. Kürzeste Wege 3. Fluß- und Zuordnungsprobleme

2 Überblick Grundlegende Datenstrukturen Wie können mehrere Objekte einer gleichen Klasse in einem Objekt zusammengefasst werden, ohne vorher die Anzahl der Elementen festzulegen? Wie werden Operationen auf dynamischen Datenstrukturen spezifiziert? Welche Arten dynamischer Datenstrukturen gibt es?

3 Abstrakte Datentypen Ein abstrakter Datentyp (ADT) ist eine Datenstruktur zusammen mit darauf definierten Operationen. Bei der Festlegung von ADTs werden Aspekte der konkreten Implementierung nicht berücksichtigt In Java können ADTs durch Definition von Interfaces spezifiziert werden Beispiele von ADTs: Keller (engl. Stacks), Schlangen (engl. Queues) verkettete Listen. 3

4 Datenstruktur: Stack Ein Stack (Stapel- oder Kellerspeicher) ist eine Folge von Elementen a 1,..., a m Nur am Ende der Folgen können Elemente gelesen, gelöscht oder hinzugefügt werden (top) Das zuletzt eingefügte Element wird zuerst entfernt: LIFO-Prinzip (Last-In First-Out) a m Oben (top) a m-1... a... 2 a 1 4

5 Beispiele für Stack: Stapel von Münzen Stapel von Tellern Stapel von Akten Datenstruktur: Stack 5

6 Stack: Anwendbare Operationen (1) push : Stack X Objekt Stack Mit der Operation push legt man ein Element auf dem Stapel ab 6

7 Stack: Anwendbare Operationen (2) pop : Stack Stack Mit der Operation pop entfernt man das oberste Element eines Stapels top : Stack Objekt Mit der Operation top erhält man das oberste Element eines Stapels 7

8 Stack: Anwendbare Operationen (3) push : Stack X Objekt Stack legt Element auf Keller pop : Stack Stack entfernt oberstes Element top : Stack Objekt liefert oberstes Element empty : Stack boolean liefert true, falls Keller leer ist Merke: Die Operationen pop und top sind nur zulässig, wenn der Stapel nicht leer ist 8

9 Stack: Definition der Schnittstelle Schnittstellendefinition public interface Stack { public void push (Object obj) throws StackException; public Object pop () throws StackException; public Object top () throws StackException; public boolean isempty (); 9

10 Stack: Implementierung (1) Implementierung mit Hilfe eines Arrays Nachteil: Größe des Arrays kann nicht verändert werden public class ArrayStack implements Stack { private Object elements[] = null; // Array von Elementen private int num = 0; num: speichert die aktuelle Anzahl von Elementen. Wird beim push inkrementiert, beim pop dekrementiert public ArrayStack (int size) { elements = new Object [size]; public ArrayStack () { elements = new Object [100]; Konstruktor mit vorgegebener Kapazität Konstruktor mit Standardkapazität: Stack wird mit einem Array von 100 Elementen Angelegt 10

11 Stack: Implementierung (2) public void push (Object obj) throws StackException { if (num == elements.length - 1) Ausnahme falls Kapazität // Kapazität erschöpft erschöpft ist: throw new StackException (); num = elements.length elements[num++] = obj; public Object pop () throws StackException { if (isempty ()) // Stack ist leer throw new StackException (); Object o = elements[--num]; elements[num] = null; return o; 11

12 Stack: Implementierung (3) public Object top () throws StackException { if (isempty ()) throw new StackException (); return elements[num - 1]; public boolean isempty () { return num == 0; true falls num gleich 0 false fals num ungleich 0 12

13 Compilerbau: Stack: typische Anwendungen Auswertung von Postfix-Ausdrücken Syntaktischen Analyse von Programmen Umwandlung von rekursiven Programmen in nicht-rekursive Programme Backtracking-Algorithmen Laufzeitstack bei der Speicherplatzverwaltung von Programmen 13

14 Stack: Auswertung von Postfix-Ausdrücken (1) Beispiel: Arithmetischer Ausdruck (2+4) 2 /(16-7) Postfix-Ausdruck: / Abarbeitung mittels eines Stack von links nach rechts: Das gelesene Datum ist ein Operand: mit push auf dem Stack legen Das gelesene Datum ist ein Operator: auf die obersten n Elemente anwenden und das Ergebnis ersetzt die n Elemente 14

15 Auswertung von Postfix-Ausdrücken (2) / / 2 8. / / / / 36 Ergebnis= / /

16 Datenstruktur: Queue Ein Queue (Warteschlange) ist eine Folge von Elementen a 1,..., a m mit den folgenden Eigenschaften: Nur am Anfang der Folge (vorne) können Elemente gelesen und gelöscht werden können. Am anderen Ende (hinten) können Elemente hinzugefügt werden Das zuerst eingefügte Element wird zuerst entfernt: FIFO-Prinzip (First-In First-Out) a 1 a 2... A m-1 a m Anfang Ende 16

17 Queue: anwendbare Operationen enter : Queue X Objekt Queue fügt Element hinten ein leave : Schlange Queue entfernt vorderstes Element front : Queue Objekt liefert vorderstes Element empty : Queue boolean liefert true, falls die Schlange leer ist 17

18 Datenstruktur: Queue Beispiele für Warteschlangen Warteschlange an der Ladenkasse Warteschlange in der Mensa Warteschlange im Stau 18

19 Queue: Typische Anwendungen Nutzung gemeinsamer Betriebsmittel (z.b. Druckerwarteschlange, Warteschlangen für Prozessoren, usw.) Bearbeitung von von Erzeuger-/Verbraucher-Problemen Branch-and-Bound-Algorithmen für Suchprobleme in Bäumen und Graphen 19

20 Beispiel: Erzeuger / Verbraucher - Probleme Ein Produzent erzeugt (Waren-)Objekte, die von einem Konsumenten weiterverarbeitet werden Der Produzent legt die Objekte in einem Puffer ab, der Konsument entnimmt die benötigten Objekte aus dem Puffer. do { Elem x = produce (); while (q.istvoll()) warte(); Q.enter(x) while (!fertig); do { if (! q.istleer()) { Elem x = Q.front (); consume(x); 20

21 Queue: Definition der Schnittstelle Benötigte Methoden void enter(object obj) Object leave () Object front () boolean isempty() Schnittstellendefinition public interface Queue { public void enter (Object obj) throws QueueException; public Object leave () throws QueueException; public Object front () throws QueueException; public boolean isempty (); 21

22 Queue: Implementierung durch ein Array (1) Implementierung mit Array A: Maximale Warteschlangengröße = A.length Zwei Indizes markieren Anfang und Ende der Warteschlange Anfang zeigt auf das vordere Element Ende zeigt auf die nächste freie Stelle Element x in Warteschlange einfügen: x wird an Position A[Ende] gespeichert und Ende wird inkrementiert Element x aus Warteschlange entfernen: Anfang inkrementieren Y X D A T E N U V Anfang Ende 22

23 Queue: Implementierung durch ein Array (2) Problem: Falls Anfang und Ende nur inkrementiert werden würden, wird Indexbereich des Arrays überschritten Lösungen Das erste Element ist immer an Position 0, nach jedem entfernen eines Elements aus dem Array, müssen alle Elemente nach links verschoben werden -> wenig praktikabel! Indexbereich des Arrays als zyklische Liste betrachten 23

24 Queue: Implementierung durch zirkuläres Array Indexbereich als zyklische Liste: das erste Element folgt auf das letzte! Für jeden Index ist die nächste Position modulo Max. Warteschlangengröße Anfang Ende Falls Anfang= Ende kann die Warteschlange leer oder voll sein Letzte Operation war enter: Warteschlange ist voll Letzte Operation war leave: Warteschlange leer Verwendung einer boolesche Variable voll, um Zustand der Warteschlange zu protokollieren 24

25 Queue: Implementierung durch ein Array (3) Implementierung auf der Basis eines Arrays Nachteil: Die Queue kann nicht dynamisch wachsen public class ArrayQueue implements Queue { private Object[] elements; // Elemente private int Anfang =0; private int Ende =0; // Queue mit vorgegebener Kapazität erzeugen public ArrayQueue (int size) { elements = new Object[size]; Konstruktor mit vorgegebener Kapazität // Queue mit Standardkapazität erzeugen public ArrayQueue () { Konstruktor mit Standardkapazität: elements = new Object[100]; Warteschlange wird mit einem Array von 100 Elementen Angelegt 25

26 Queue: Implementierung durch ein Array (4) public void enter (Object obj) throws QueueException { if (istvoll()) throw new QueueException ( Überlauf! ); elements[ende] = obj; Objekt in Array aufnehmen Ende = next(ende); Ende-Index fortschalten voll =(Anfang == Ende); Zustand speichern: voll falls Anfang = Ende, public Object leave () throws QueueException { sonst nicht voll if (isempty ()) throw new QueueException ( Zugriff auf leere Queue! ); Object obj = elements[anfang]; elements[anfang] = null; // unteren Zeiger aktualisieren Anfang = next(anfang); voll = false; return obj; Anfang-Index fortschalten Nach leave darf die Queue nicht voll sein 26

27 Queue: Implementierung durch ein Array (5) public Object front () throws QueueException { if (isempty ()) throw new QueueException ( Zugriff auf leere Queue ); return elements[anfang]; public int next(int n){ return (n+1)%elements.length; public boolean isvoll () { return voll; public boolean isempty () { return ((Anfang == Ende) && (voll!= false) ); true falls Anfang gleich Ende False sonst Anfang kann gleich Ende sein und die Queue ist voll! Dieser Fall wird damit abgefangen! 27

28 Datenstruktur: Liste Eine (verkettete) Liste (linked list) ist eine dynamische Folge von Elementen a 1,..., a m mit den folgenden Eigenschaften: Im Gegensatz zu Arrays können Listen zur Laufzeit beliebig wachsen und verändert werden. Jedes Listenelement hat zwei Komponenten Inhalt Das eigentlich zu speichernde Element. Kann ein beliebiges Objekt oder ein primitiver Datentyp sein. Referenz auf das nachfolgende Element 28

29 Datenstruktur: Liste Für die Navigieren in einer Liste muss das erste Element erreichbar sein: Der Anker für den Beginn der Liste wird mit Head bezeichnet Das letzte Element verweist auf null Für eine einfache Handhabung kann eine bestimmte Position als "aktuell" ausgezeichnet werden. Eine solche Position wird auch Cursor genannt. head Objekt 1 next Objekt 2 next Objekt 3 next X null Cursor (2) 29

30 Elemente in Listen einfügen Beim Einfügen eines neuen Elements in eine Liste gibt es drei Möglichkeiten: Prepend: Einfügen vor dem ersten Listenelement Das erste Listenelement wird zum Nachfolger des neuen Elements head zeigt auf das neue Element. Insert: Einfügen hinter einem gegebenen Element next des neuen Elements übernimmt den Wert next des aktuellen Elements. current.next wird auf das neue Element gesetzt. Append: Einfügen als letztes Element current.next des letzten Listenelements wird auf die Referenz des neuen Elements gesetzt Ein Sonderfall von insert. 30

31 Verkettete Liste: Anwendbare Operationen addfirst : Liste X Objekt Liste fügt ein Element am Anfang der Liste ein (entspricht prepend ) addlast : Liste X Objekt Liste fügt ein Element am Ende der Liste ein (entspricht append ) removefirst : Liste Liste löscht das erste Element removelast : Liste Liste löscht das letzte Element getfirst : Liste Objekt liefert das erste Element getlast : Liste Objekt liefert das letzte Element empty : Liste boolean liefert true, falls Liste leer ist size : Liste int liefert Anzahl der Elementen in der Liste 31

32 Einfügen vor dem ersten Listenelement Operation AddFirst: head bekommt Referenz auf das neue Objekt Objekt 0 head next X Objekt 1 next Objekt 2 next Objekt 3 next X null 32

33 Einfügen als letztes Element Operation AddLast 1. Letzte Element finden 2. Next-Referenz auf neues Element Aufwand ist abhängig der Anzahl der Elementen in der Liste Objekt 4 head next Objekt 1 next Objekt 2 next Objekt 3 next X X null 33

34 Das letzte Element löschen Operation removelast 1. Vorletztes Element finden 2. Next-Referenz des vorletzten Elements auf null setzten Aufwand ist abhängig der Anzahl der Elementen in der Liste head Objekt 1 next Objekt 2 next Objekt 3 next X null 34

35 Komplexität der Listenoperationen Operation AddFirst getfirst removefirst AddLast getlast removelast Komplexität O(1) O(n) 35

36 Verkettete Liste: Definition der Schnittstelle public interface Liste { public void addfirst (Object o) public void addlast (Object o) public Object removefirst () public Object removelast () public Object getfirst () public Object getlast () public boolean isempty () public int size () 36

37 Verkettete Liste: Definition von Listenelementen class Node { Object obj; Node next; public Node (Object o, Node n) { obj = o; next = n; public Node () { obj = null; next = null; public void setelement (Object o) { obj = o; public Object getelement () { return obj; public void setnext (Node n){ next = n; public Node getnext () { return next; 37

38 Verkettete Liste: Implementierung public class List { private Node head = null; public List () { head = new Node (); public void addfirst (Object o) { Node n = new Node (o, head.getnext ()); head.setnext (n); public void addlast (Object o) { Node l = head; while (l.getnext ()!= null) l = l.getnext (); Node n = new Node (o, null); l.setnext (n); public Object getfirst () throws ListEmptyException { if (isempty ()) throw new ListEmptyException (); return head.getnext ().getelement (); public Object getlast () throws ListEmptyException { if (isempty ()) throw new ListEmptyException (); Node l = head; while (l.getnext ()!= null) l = l.getnext (); return l.getelement (); public Object removefirst () throws ListEmptyException { if (isempty ()) throw new ListEmptyException (); Object o = head.getnext ().getelement (); head.setnext (head.getnext ().getnext ()); return o; public boolean isempty () { return head.getnext () == null; 38

39 Verkettete Liste: Implementierung public Object removelast () throws ListEmptyException { if (isempty ()) throw new ListEmptyException (); Node l = head; while (l.getnext ().getnext ()!= null) l = l.getnext (); Object o = l.getnext ().getelement (); l.setnext (null); return o; public int size () { int s = 0; Node n = head; while (n.getnext ()!= null) { s++; n = n.getnext (); return s; 39

40 Verkettete Listen: Zusammenfassung Vorteile von verkettete Listen : Dynamische Länge Keine Speicherverschwendung durch Vorreservierung des Speicherplatzes Einfache Einfüge- und Löschoperationen In den Listenelementen enthaltene Objekte können beliebige Objekte untergebracht werden Nachteile: Zugriff erfolgt immer sequentiell Aufwand für Suche nach einem Listen-Element: Da es sich um eine lineare Suche handelt, gilt Aufwand = O(1) im günstigsten Fall bzw. O(n) in den anderen Fällen. 40

41 Doppelt verkettete Listen Die doppelt verkettete Liste ist eine spezielle verkettete Liste bei der jedes Element sowohl seinen Nachfolger als auch seinen Vorgänger kennt tail zeigt auf das Ende der Liste Merke: Die Operationen AddLast, getlast und removelast sind nun mit konstantem Aufwand realisierbar! head tail Objekt 1 Objekt 1 Objekt 1 next next next X null Prev. Prev. Prev. X null 41

42 Komplexität der Listenoperationen Operation AddFirst getfirst removefirst AddLast getlast removelast Komplexität O(1) 42

43 Das Iterator-Konzept (1) Das Durchwandern (über alle Elemente zu navigieren) einer Kollektion ist abhängig der Implementierung Bei der Benutzung von Arrays für die Implementierung einer Kollektion wird eine Indexvariable verwendet Bei der Benutzung von Listen für die Implementierung einer Kollektion wird die next-referenz verwendet Notwendigkeit einer einheitlichen Behandlung des Navigierens unabhängig der internen Realisierung der Kollektion Iteratoren sind Objekte zum Iterieren über Kollektionen, deren Klasse die vordefinierte Java-Schnittstelle java.util.iterator implementiert 43

44 Das Iterator-Konzept (2) Ein Iterator verwaltet einen internen Zeiger auf die aktuelle Position in der zugrunde liegende Datenstruktur Mehrere Iteratoren können gleichzeitig auf eine Kollektion operieren Iterator über Array Iterator über Liste 44

45 Die Schnittstelle Iterator Die Schnittstelle java.util.iterator definiert folgende Methoden Boolean hasnext() Prüft, ob noch weitere Elemente in der Kollektion verfügbar sind Object next() Liefert das aktuelle Element zurück und setzt den internen Zeiger des Iterators auf das nächste Element void remove Löscht das aktuelle Element 45

46 Das Java Collection Framework Grundlegende Datenstrukturen wie Liste, Stack und Warteschlange müssen nicht immer neu implementiert werden Im Java Collection Framework sind entsprechende Klassen verfügbar (z.b. ArrayList, Stack, Vector,...) Im Java Collection Framework werden Schnittstellen und Implementierungen angeboten (z.b. Schnittstelle List und Array-basierte Implementierung ArrayList) Die Schnittstelle java.util.collection bildet die Basis für die spezielleren Schnittstellen List, Set und SortetSet Die Schnittstelle Map definiert Methoden für die Verwaltung von Schlüssel-Wert-Paare 46

Teil IV. Grundlegende Datenstrukturen

Teil IV. Grundlegende Datenstrukturen Teil IV Grundlegende Datenstrukturen Überblick 1 Abstrakte und konkrete Datentypen 2 Stacks 3 Listen 4 Warteschlangen 5 Iterator Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 4 1 Abstrakte

Mehr

ALP II Dynamische Datenmengen Datenabstraktion

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

Mehr

Problem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um. Dynamische Anpassung der 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 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

Mehr

ALP II Dynamische Datenmengen Datenabstraktion (Teil 2)

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

Mehr

Einstieg in die Informatik mit Java

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

Mehr

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. 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

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1

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

Mehr

Schnittstellen, Stack und Queue

Schnittstellen, Stack und Queue Schnittstellen, Stack und Queue Schnittstelle Stack Realisierungen des Stacks Anwendungen von Stacks Schnittstelle Queue Realisierungen der Queue Anwendungen von Queues Hinweise zum Üben Anmerkung: In

Mehr

12. Dynamische Datenstrukturen

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

Mehr

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) 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

Mehr

Stacks, Queues & Bags. Datenstrukturen. Pushdown/Popup Stack. Ferd van Odenhoven. 19. September 2012

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

Mehr

Verkettete Listen. DVG Verkettete Listen 1

Verkettete Listen. DVG Verkettete Listen 1 Verkettete Listen DVG2-03 - Verkettete Listen 1 Primitive typen Vorteile: werden direkt vom Prozessor unterstützt schneller Zugriff schnelle Verarbeitung Nachteile: kleine menge feste Struktur unflexibel

Mehr

OCP Java SE 8. Collections

OCP Java SE 8. Collections OCP Java SE 8 Collections Collections (Interfaces) Iterable Collection Set List Queue SortedSet Deque Collection List erlaubt Duplikate und null behält die Reihenfolge Set erlaubt keine Duplikate Queue

Mehr

Kapitel 4: Datentyp Keller und Schlange

Kapitel 4: Datentyp Keller und Schlange Kapitel 4: Datentyp Keller und Schlange Keller (Stack) Schlange (Queue) 4-1 Definition Keller und seine Operationen Ein Keller (engl. Stack; Stapel) ist eine endliche Menge von Elementen mit einer LIFO-Organisation

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen 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

Mehr

Programmieren I. Kapitel 13. Listen

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

Mehr

Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken.

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

Mehr

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit

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

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

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.

Mehr

Lineare Datenstrukturen: Felder, Vektoren, Listen Modelle: math. Folge (a i ) i=1.. mit Basistyp T oder: [T]

Lineare Datenstrukturen: Felder, Vektoren, Listen Modelle: math. Folge (a i ) i=1.. mit Basistyp T oder: [T] Teil II: Datenstrukturen Datenstrukturen Lineare Datenstrukturen: Felder, Vektoren, Listen Modelle: math. Folge (a i ) i=1.. mit Basistyp T oder: [T] Nichtlineare Datenstrukturen: Bäume Modell(e): spezielle

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen 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

Mehr

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen

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

Mehr

ALP II Dynamische Datenmengen

ALP II Dynamische Datenmengen ALP II Dynamische Datenmengen Teil III Iteratoren Iterator-Objekt O1 O2 O3 O4 SS 2012 Prof. Dr. Margarita Esponda 22. ALP2-Vorlesung, M. Esponda 2 Motivation: Iteratoren Wir haben für die Implementierung

Mehr

Verkettete Listen. Implementierung von einfach verketteten Listen. Implementierung von doppelt verketteten Listen

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

Mehr

JAVA KURS COLLECTION

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)

Mehr

1 Abstrakte Datentypen

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;

Mehr

11. Elementare Datenstrukturen

11. 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

Mehr

Stapel (Stack, Keller)

Stapel (Stack, Keller) Stapel (Stack, Keller) Eine wichtige Datenstruktur ist der Stapel. Das Prinzip, dass das zuletzt eingefügte Element als erstes wieder entfernt werden muss, bezeichnet man als LIFO-Prinzip (last-in, first-out).

Mehr

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Feld. Feld als sequentielle Liste

Programm 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

Mehr

Advanced Programming in C

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

Mehr

Theoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke

Theoretische 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

Mehr

Aufgaben NF 11; Seite 1

Aufgaben NF 11; Seite 1 Aufgabe Ref 1: Gegeben ist die Klasse Schueler public class Schueler { private String name, vorname, kurs; // Konstruktor public Schueler(String n, String vn, String k) { name=n; vorname=vn; kurs=k; public

Mehr

6. Verkettete Strukturen: Listen

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

Mehr

3. Übungsblatt zu Algorithmen I im SoSe 2017

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

Mehr

Programmieren 2 16 Java Collections und Generizität

Programmieren 2 16 Java Collections und Generizität Programmieren 2 16 Java Collections und Generizität Bachelor Medieninformatik Wintersemester 2015 Dipl.-Inform. Ilse Schmiedecke schmiedecke@beuth-hochschule.de 1 Faulheit professionell: Fertige Datenbehälter

Mehr

Verkettete Datenstrukturen: Listen

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).

Mehr

Algorithmen und Datenstrukturen Kapitel 4 Neue Datenstrukturen, besseres (?) Sortieren

Algorithmen 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

Mehr

8 Elementare Datenstrukturen

8 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.

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

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

Mehr

Graphdurchmusterung, Breiten- und Tiefensuche

Graphdurchmusterung, Breiten- und Tiefensuche Prof. Thomas Richter 18. Mai 2017 Institut für Analysis und Numerik Otto-von-Guericke-Universität Magdeburg thomas.richter@ovgu.de Material zur Vorlesung Algorithmische Mathematik II am 18.05.2017 Graphdurchmusterung,

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Java Generics und Java API (2/2) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer #2 Listen Bisher: Collections

Mehr

Datenstrukturen und Abstrakte Datentypen

Datenstrukturen und Abstrakte Datentypen Datenstrukturen und Abstrakte Datentypen Abstrakter Datentyp Idee der sequentiellen Struktur Einfach verkettete Liste Iteratorkonzept Prof. Dr. E. Ehses, 2014 1 Definition: Ein abstrakter Datentyp (ADT)

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Java Generics und Java API (1/2) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer Datenstrukturen In vielen Sprachen

Mehr

Listen. M. Jakob. 20. September Gymnasium Pegnitz

Listen. 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

Mehr

Listen. M. Jakob. Gymnasium Pegnitz. 20. September Hinführung: Wartenschlangen. Grundprinzip von Listen Rekursion

Listen. 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

Mehr

Vorlesung Datenstrukturen

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

Mehr

5. Strukturen und Algorithmen

5. 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

Mehr

Abstrakte Datentypen und Java

Abstrakte Datentypen und Java Abstrakte Datentypen und Java ƒ hehueolfn ƒ 5HDOLVLHUXQJYRQ$'7 NRQNUHWH'DWHQW\SHQ %HLVSLHO5DWLRQDOH=DKO ƒ 3DUDPHWULVLHUWH'DWHQW\SHQ %HLVSLHO)HOG6RUWLHUWHV)HOG ƒ 6FKQLWWVWHOOHQNRQ]HSW ƒ :LFKWLJH'DWHQW\SHQLQ-DYD

Mehr

Algorithmen und Datenstrukturen (für ET/IT) Wiederholung: Ziele der Vorlesung. Wintersemester 2012/13. Dr. Tobias Lasser

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

Mehr

Einführung in die Informatik I

Einführung in die Informatik I Einführung in die Informatik I Einige wichtige Datenstrukturen: Vektor, Matrix, Liste, Stapelspeicher, Warteschlange Prof. Dr. Nikolaus Wulff Datenstruktur / Datentyp Programme benötigen nicht nur effiziente

Mehr

3. Verkettete Listen, Stacks, Queues

3. Verkettete Listen, Stacks, Queues 3. Verkettete Listen, Stacks, Queues Verkettete lineare Listen - Einfache Verkettung - Doppelt verkettete Listen - Vergleich der Implementierungen - Iterator-Konzept Fortgeschrittenere Kettenstrukturen

Mehr

Verkettete Speicherung linearer Listen. 3. Verkettete Listen, Stacks, Queues. Implementierung 1(Forts.) Verkettete Liste: Implementierung 1

Verkettete Speicherung linearer Listen. 3. Verkettete Listen, Stacks, Queues. Implementierung 1(Forts.) Verkettete Liste: Implementierung 1 3. Verkettete Listen, Stacks, Queues Verkettete lineare Listen - Einfache Verkettung - Doppelt verkettete Listen - Vergleich der Implementierungen - Iterator-Konzept Fortgeschrittenere Kettenstrukturen

Mehr

Einführung in die Informatik 2

Einfü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

Mehr

Algorithmen und Datenstrukturen

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

Mehr

Java Einführung Collections

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]...

Mehr

Schein-/Bachelorklausur Teil 2 am Zulassung: Mindestens 14 Punkte in Teilklausur 1 und 50% der Übungspunkte aus dem 2. Übungsblock.

Schein-/Bachelorklausur Teil 2 am Zulassung: Mindestens 14 Punkte in Teilklausur 1 und 50% der Übungspunkte aus dem 2. Übungsblock. Schein-/Bachelorklausur Teil 2 am 13.02.2007 Zulassung: Mindestens 14 Punkte in Teilklausur 1 und 50% der Übungspunkte aus dem 2. Übungsblock. Alle Studiengänge außer Bachelor melden sich über die Lehrstuhlwebseite

Mehr

Programmieren in C. Rekursive Strukturen. Prof. Dr. Nikolaus Wulff

Programmieren 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

Mehr

public interface Stack<E> { public void push(e e); public E pop();

public interface Stack<E> { public void push(e e); public E pop(); ADS Zusammenfassung René Bernhardsgrütter 02.04.2012 1 Generics Gewähren Typsicherheit und können für verschiedene Datentypen ohne Casts verwendet werden. Beim Erstellen der Klasse werden Platzhalter für

Mehr

Teil V. Generics und Kollektionen in Java

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

Mehr

Kapitel 7: Java Collection Teil I

Kapitel 7: Java Collection Teil I Kapitel 7: Java Collection Teil I! Übersicht! Bemerkungen! Collection! List! LinkedList und ArrayList! Queue und Deque! ArrayDeque Prof. Dr. O. Bittel, HTWG Konstanz Programmiertechnik II Java Collection

Mehr

Teil VII. Hashverfahren

Teil VII. Hashverfahren Teil VII Hashverfahren Überblick 1 Hashverfahren: Prinzip 2 Hashfunktionen 3 Kollisionsstrategien 4 Aufwand 5 Hashen in Java Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 7 1 Hashverfahren:

Mehr

Informatik II Prüfungsvorbereitungskurs

Informatik II Prüfungsvorbereitungskurs Informatik II Prüfungsvorbereitungskurs Tag 4, 23.6.2016 Giuseppe Accaputo g@accaputo.ch 1 Programm für heute Repetition Datenstrukturen Unter anderem Fragen von gestern Point-in-Polygon Algorithmus Shortest

Mehr

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 10, Donnerstag 8.

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 10, Donnerstag 8. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 10, Donnerstag 8. Januar 2015 (Verkettete Listen, Binäre Suchbäume) Junior-Prof. Dr.

Mehr

Programmieren 2 Übung Semesterwoche 2

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

Mehr

Stand der Vorlesung. Vergleich verkettete Liste und sequentielle Liste

Stand 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

ADT: Verkettete Listen

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

Mehr

Technische Universität München

Technische 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

Mehr

Grundkonzepte java.util.list

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.

Mehr

Kapitel 12: Induktive

Kapitel 12: Induktive Kapitel 12: Induktive Datenstrukturen Felix Freiling Lehrstuhl für Praktische Informatik 1 Universität Mannheim Vorlesung Praktische Informatik I im Herbstsemester 2009 Folien nach einer Vorlage von H.-Peter

Mehr

Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit

Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit Aufgabe : Die allgemeine Object-Liste Gegeben sei folgendes UML-Klassendiagramm: MyObjectList

Mehr

Einfach verkettete Liste

Einfach 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

Mehr

13. Bäume: effektives Suchen und Sortieren

13. Bäume: effektives Suchen und Sortieren Schwerpunkte Aufgabe und Vorteile von Bäumen 13. Bäume: effektives Suchen und Sortieren Java-Beispiele: Baum.java Traverse.java TraverseTest.java Sortieren mit Bäumen Ausgabealgorithmen: - Preorder - Postorder

Mehr

Übung Algorithmen und Datenstrukturen

Ü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)

Mehr

Übung Algorithmen und Datenstrukturen

Ü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:

Mehr

3 Dynamische Datenstrukturen

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

Mehr

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen

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

Mehr

3.3. Rekursive Datentypen

3.3. Rekursive Datentypen 3.3. Rekursive Datentypen class Element int info; Element naechster;... Element element = new Element(); element.info = 1; element.naechster = new Element(); element.naechster.info = 2; Erläuterung: Objekte

Mehr

Logische Datenstrukturen

Logische 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

Mehr

Algorithmen und Datenstrukturen 11

Algorithmen und Datenstrukturen 11 5. Juli 2012 1 Besprechung Blatt 10 Fragen 2 Hashing Allgemein, Hashtablestruktur Sondierungsverfahren 3 Anonyme und innere Klassen Anonyme Klassen Innere Klassen 4 Zirkuläre Arrays 5 Vorbereitung Blatt

Mehr

Grundlagen: Algorithmen und 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

Mehr

Informatik II Übung, Woche 14

Informatik II Übung, Woche 14 Giuseppe Accaputo 7. April, 2016 Plan für heute 1. Java Klassen Beispiel: Implementation eines Vorlesungsverzeichnis (VVZ) 2. Informatik II (D-BAUG) Giuseppe Accaputo 2 Java Klassen Beispiel: Implementation

Mehr

Einführung in die STL

Einführung in die STL Einführung in die STL Fimberger Lucia lfimberg@cosy.sbg.ac.at Nidetzky Marion mnidetzk@cosy.sbg.ac.at Was ist die STL? Abkürzung für Standard Template Library Eine generische Bibliothek Ist kaum objektorientiert,

Mehr

Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing

Algorithmen 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

Mehr

Inhaltsverzeichnis. Praktikum Algoritmen und Datenstrukturen WS2004/2005 Paul Litzbarski Stefan Nottorf. Druckmanager allgemein 2.

Inhaltsverzeichnis. Praktikum Algoritmen und Datenstrukturen WS2004/2005 Paul Litzbarski Stefan Nottorf. Druckmanager allgemein 2. Praktikum Algoritmen und Datenstrukturen WS2004/2005 Paul Litzbarski Stefan Nottorf Inhaltsverzeichnis Druckmanager allgemein 2 Design 2 Druckauftrag 3 Liste 4 ListenEintrag 6 GUI 7 1 Druckmanager : allgemein

Mehr

4.4.1 Implementierung vollständiger Bäume mit Feldern. Reguläre Struktur: Nachfolger des Knoten i sind die Knoten 2*i und 2*i+1.

4.4.1 Implementierung vollständiger Bäume mit Feldern. Reguläre Struktur: Nachfolger des Knoten i sind die Knoten 2*i und 2*i+1. 4.4 Implementierung von Bäumen 4.4.1 Implementierung vollständiger Bäume mit Feldern 1 3 2 7 9 3 4 8 5 17 12 10 6 7 8 13 11 18 9 10 Reguläre Struktur: Nachfolger des Knoten i sind die Knoten 2*i und 2*i+1.

Mehr

Programmieren in Java

Programmieren in Java Datenstrukturen 2 Gruppierung von Daten Datentypen, die eine Menge an Daten gruppieren und auf dieser Gruppierung eine gewisse Logik bereitstellen werden Datenstrukturen genannt Bisher wurde zur Gruppierung

Mehr

Einfache Liste: Ein Stapel (Stack) Ansatz. Schaubild. Vorlesung 1. Handout S. 2. Die einfachste Form einer Liste ist ein Stapel (stack).

Einfache Liste: Ein Stapel (Stack) Ansatz. Schaubild. Vorlesung 1. Handout S. 2. Die einfachste Form einer Liste ist ein Stapel (stack). Programmieren I Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 / 64 2 / 64 Motivation Hauptteil dieser Vorlesung sind die so genannten. Zur Motivation (und als Vorbereitung der Datencontainer-Klassen

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 7 (21.5.2014) Binäre Suche, Hashtabellen I Algorithmen und Komplexität Abstrakte Datentypen : Dictionary Dictionary: (auch: Maps, assoziative

Mehr

C- Kurs 09 Dynamische Datenstrukturen

C- 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

Mehr

Assoziative Container in C++ Christian Poulter

Assoziative Container in C++ Christian Poulter Assoziative Container in C++ Christian Poulter Seminar: Die Sprache C++ Mat-Nr.: 53 03 129 EMail: inf@poulter.de Christian Poulter Assoziative Container in C++ Seite 1/10 Inhalt 1. Einleitung: Container...

Mehr

Einführung in die Programmierung

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

Mehr

! 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 - ! 1. Rekursive Algorithmen! 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Ausdruck Ausdruck Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ Ausdruck ] ( Ausdruck

Mehr

Abstrakte Datentypen und Datenstrukturen

Abstrakte Datentypen und Datenstrukturen Abstrakte Datentypen und Datenstrukturen Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 3. VO DAP2 SS 2009 21. April 2009 1 Praktikum zu DAP 2 Beginn: Mittwoch

Mehr

11 Grundlegende Datenstrukturen

11 Grundlegende Datenstrukturen 11.1 Einführung Datenstrukturen 11.2 Motivation: Kollektionen 11.3 Stack 11.4 Listen 11.5 Kollektionen in Java 11.6 Parametrisierbare Datenstrukturen in Java 188 Teil XI Grundlegende Datenstrukturen 11

Mehr

3. Übungsbesprechung Programmkonstruktion

3. Übungsbesprechung Programmkonstruktion 3. Übungsbesprechung Programmkonstruktion Karl Gmeiner karl@complang.tuwien.ac.at December 12, 2011 K Gmeiner (karl@complang.tuwien.ac.at) 3. Übungsbesprechung PK December 12, 2011 1 / 13 Rückblick und

Mehr

Verkettete Datenstrukturen: Bäume

Verkettete Datenstrukturen: Bäume Verkettete Datenstrukturen: Bäume 1 Graphen Gerichteter Graph: Menge von Knoten (= Elementen) + Menge von Kanten. Kante: Verbindung zwischen zwei Knoten k 1 k 2 = Paar von Knoten (k 1, k 2 ). Menge aller

Mehr

Programmierkurs C++ Templates & STL (1/2)

Programmierkurs C++ Templates & STL (1/2) Programmierkurs C++ Templates & STL (1/2) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer #2 Templates Die wichtigsten objekt-orientierten

Mehr

Datenstrukturen / Container in Java

Datenstrukturen / Container in Java Datenstrukturen / Container in Java Mathematik / Algebraischer Datentyp / Containerklassen Enum-Klassen Arrays (Felder) = elementare Container Algorithmen mit Arrays Prof. Dr. E. Ehses, 2014 1 Mathematik

Mehr

12 Collections Framework. Interfaces Maps and Collections. Collection Interface. Überblick. Collection = Containterklasse, die andere Objekte enthält.

12 Collections Framework. Interfaces Maps and Collections. Collection Interface. Überblick. Collection = Containterklasse, die andere Objekte enthält. Collection = Containterklasse, die andere Objekte enthält. Inhalte: Schnittstellen Implementierungen Algorithmen Interfaces Maps and Collections Iterable Collection Map Vorteile: Set List Queue SortedMap

Mehr

Bäume. Text. Prof. Dr. Margarita Esponda SS 2012 O4 O5 O6 O ALP2-Vorlesung, M. Esponda

Bäume. Text. Prof. Dr. Margarita Esponda SS 2012 O4 O5 O6 O ALP2-Vorlesung, M. Esponda Bäume O1 O2 Text O3 O4 O5 O6 O7 Prof. Dr. Margarita Esponda SS 2012 22. ALP2-Vorlesung, M. Esponda Inhalt 1. Einführung 2. Warum Bäume? 3. Listen und Arrays vs. Bäume 4. Einfach verkettete binäre Suchbäume

Mehr