Algorithmen und Datenstrukturen CS1017

Größe: px
Ab Seite anzeigen:

Download "Algorithmen und Datenstrukturen CS1017"

Transkript

1 Algorithmen und Datenstrukturen CS1017 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Datenstrukturen I: Lineare Sequenzen / Listen Datenstrukturen für Sequenzen Sequenzen in der Java-API: Listen und Ströme Iteratoren Algorithmen auf Sequenzen

2 Lineare Sequenzen / Listen Funktionaler Datentyp Liste Eine Liste ist eine endliche Kollektion von Werten, bei der jedem Wert eine eindeutige Position aus dem Bereich der natürlichen Zahlen zugeordnet ist. (a, b, c) ~ 0 a, 1 b, 2 c Listen-Werte: Alle Sequenzen (endliche total geordnete Folgen) von Element-Werten Operationen: Den Wert an (Index-) Position i feststellen Feststellen der Länge (Anzahl der Elemente) Seite 2

3 Lineare Sequenzen / Listen Imperativer Datentyp Liste Eine imperative (veränderliche) Liste ist eine endliche Kollektion von Variablen, bei der jeder Variablen eine eindeutige Position aus dem Bereich der natürlichen Zahlen zugeordnet ist. 0 a, ( a, b, c ) ~ 1 b, 2 c Listen-Variable: Alle veränderlichen Sequenzen (endliche total geordnete Folgen) von Variablen Operationen: Den Wert an (Index-) Position i feststellen Feststellen der Länge (Anzahl der Elemente) Ein Element an einer bestimmten Position einfügen Eventuell weitere abgeleitete Operationen (Vorgänger / Nachfolger, etc.) Eventuell Beschränkungen bei den Einfüge- und Zugriffs-Operationen (Nur am Anfang / Ende der Sequenz)... Seite 3

4 Lineare Sequenzen / Listen Im Zusammenhang mit Listen werden viele Begriffe gebraucht die eine völlig unterschiedliche, ähnliche oder gleiche Bedeutung haben. Es ist wichtig zu wissen, was genau gemeint ist, bzw. gemeint sein könnte und selbst eine klare Ausdrucksweise zu benutzen. Liste als (Daten-) Typ Alles mit einer von aussen beobachtbaren linearen Ordnung* Folge, Sequenz, lineare Sequenz, Vektor, Strom, sind weitere Bezeichnungen Unterscheidung: funktional (= unveränderlich) ist unveränderlich ~ ist ein Wert imperativ (= veränderlich) Die Liste und eventuell aber nicht unbedingt auch ihre Elemente können verändert werden ist veränderlich ~ ist eine Variable *siehe Veranstaltung Diskrete Mathematik oder Seite 4

5 Lineare Sequenzen / Listen Liste als (Daten-) Struktur Alles was tatsächlich in einer linearen Ordnung angeordnet ist Weitere Bezeichnungen: Folge, Sequenz, lineare Sequenz, Vektor, Strom, Auch hier kann zwischen veränderlich und unveränderlich unterschieden werden. Datenstrukturen werden aber in der Regel als veränderliche Beziehungen realisiert, auch wenn sie von aussen unveränderlich zu sein scheinen Seite 5

6 Imperative Listen (lineare Sequenzen) in der Java-API Imperative Listen / Sequenzen in der Java-API Imperative (Veränderliche) Listen werden in unterschiedlichen Varianten von der Java-API zur Verfügung gestellt Interfaces (Varianten in den möglichen Operationen) java.util Interface List<E> Einfügen und Entnehmen an beliebigen Positionen möglich java.util Interface Queue<E> Einfügen nur an einem Ende, Entnehmen nur am anderen Ende möglich java.util Interface Deque<E> Einfügen und Entnehmen nur an den beiden Enden möglich Klassen (ADTs, Varianten in der Implementierung der Interfaces) java.util Class ArrayList<E> Array-basierte Listenimplementierung java.util Class Vector<E> Array-basierte Listenimplementierung mit synchronisierten Operationen java.util Class ArrayDeque<E> Array-basierte Listenimplementierung mit Einfügen und Entnehmen nur an den beiden Enden möglich Seite 6

7 Funktionale Listen (lineare Sequenzen) in der Java-API Funktionale Listen / Sequenzen in der Java-API: Streams Die Java-API unterstützt ab Java-8 auch die funktionale Programmierung Dazu gehören funktionale / unveränderliche Listen mit speziellen Operationen Streams java.util.stream.stream ist ein Interface es bietet eine funktionale Sicht auf nicht-funktionale Listen / Sequenzen Beispiel: import java.util.arrays; import java.util.list; import java.util.stream.stream; public class Streams_App { public static void main(string[] args) { List<Integer> lst = Arrays.asList(new Integer[]{1,2,3,4,5,6,7,8,9,10); int sum1 = 0; for (int i: lst) { sum1 = sum1+i; System.out.println(sum1); Klassisch imperativ auf imperativer Liste: Summe mit Iterator Imperative Liste bekommt funktionales Gesicht und wird funktional summiert Stream<Integer> strm = lst.stream(); int sum2 = strm.reduce(0, (a, x) -> a+x ); System.out.println(sum2); Seite 7

8 Datenstrukturen für Listen Listen auf Basis von Arrays Listen können mit Hilfe von Arrays implementiert werden Datentyp Liste Vorteil Datenstruktur Array Effiziente Zugriffsoperationen Nachteil Aufwendiges Einfügen und Entfernen im Inneren Aufwendiges Vergrößern Eventuell Verschwendung von Speicherplatz Array-basierte Liste Implementierungen in der Java-API ArrayList<E> Vector<E> veraltet Stack<E> veraltet Verwenden Sie die Klasse ArrayList, es sei denn Sie wissen, dass und warum diese nicht geeignet ist. Verwenden Sie dann eine andere Klasse aus der API. Gibt es nichts Geeignetes dann implementieren Sie eine Klasse auf Basis von java.util.abstractlist. Seite 8

9 Datenstrukturen für Listen Eigene Listenimplementierung auf Basis von Arrays Listen auf Basis von Arrays sind leicht zu implementieren public class MyArrayList<E> { private int topindex = private int arraysize = Aufgabe: 0; // index of first empty position 10; // actual array size Ist dies eine Implementierung von private E[] array = (E[]) new public boolean add(e element) { if (topindex == arraysize) { E[] arraytemp = (E[]) new Object[arraySize+10]; System.arraycopy(array, 0, arraytemp, 0, arraysize); array = arraytemp; arraysize = arraysize+10; array[topindex++] = element; public static void main(string[] args) { return true; MyArrayList<String> l = new MyArrayList(); for (int i=0; i<15; i++) { l.add("blub "+i); public E get(int index) { return array[index]; System.out.println(l.size()); public int size() { return topindex; for (int i=0; i<l.size(); i++) { System.out.println(l.get(i)); Seite 9

10 Datenstrukturen für Listen Eigene Listenimplementierung auf Basis von Arrays Listen auf Basis von Arrays sind leicht zu implementieren Allerdings erfüllt eine einfache Implementierung nicht das Interface java.util.list<e> public class MyArrayList<E> implements List<E> { Es fehlen sehr (!) viele Methoden die im Interface deklariert sind! Seite 10

11 Datenstrukturen für Listen Eigene Listenimplementierung auf Basis von Arrays Die Java-API bietet eine Basisklasse zur Erleichterung der Implementierung eigener Array-basierter Listen: java.util Class AbstractList<E> Implementierungsskelett für eigene Listenimplementierungen durch Ableitung import java.util.abstractlist; import java.util.list; public class MyArrayList<E> extends AbstractList<E> implements List<E> { private int topindex = private int arraysize = 0; // index of first empty position 10; // actual array private E[] array = (E[]) new public boolean add(e element) { if (topindex == arraysize) { E[] arraytemp = (E[]) new Object[arraySize+10]; System.arraycopy(array, 0, arraytemp, 0, arraysize); array = arraytemp; arraysize = arraysize+10; array[topindex++] = element; return true; public E get(int index) { return array[index]; public int size() { return topindex; Seite 11 Die fehlenden Methoden werden von AbstractList geliefert!

12 Datenstrukturen für Listen Verwendungs-Beispiel der selbst definierten Liste: public static void main(string[] args) { Fragen: List<String> l = new MyArrayList<>(); 1. Warum gibt add true zurück? for (int i=0; i<15; i++) { l.add("blub "+i); 2. Funktionieren beide (überladenen) Varianten der Methode add? 3. Funktionieren die Schleifen? l.add(5, "Hi"); 4. Wie nennt man die Form der dritten Schleife? System.out.println(l.size()); 5. Implementiert die Klasse das Interface Iterable<E>? for (int i=0; i<l.size(); i++) { System.out.println(l.get(i)); for (String s : l) { System.out.println(s); Seite 12

13 Datenstrukturen für Listen Verwendungs-Beispiel der selbst definierten Liste: public static void main(string[] args) { Fragen: List<String> l = new MyArrayList<>(); 1. Warum gibt add true zurück? Das Interface List verlangt es so for (int i=0; i<15; i++) { l.add("blub "+i); 2. Funktionieren beide (überladenen) Varianten der Methode add? Nein, nur die erste, siehe API zu AbstractList l.add(5, "Hi"); 3. Funktioniert die Schleifen? Ja! System.out.println(l.size()); 4. Funktioniert die zweite Schleife? Ja! for (int i=0; i<l.size(); i++) { System.out.println(l.get(i)); 5. Wie nennt man die Form der dritten Schleife? for each Schleife for (String s : l) { System.out.println(s); 6. Implementiert die Klasse das Interface Iterable<E>? Ja: MyArrayList ~extends~> AbstractList ~implements~> List ~extends~> Iterable Seite 13

14 Iteratoren for-each-schleife ~> Iterator Elegantes Durchlaufen einer iterierbaren Kollektion Basiert auf einem Iterator. Iterator: Mechanismus zum Durchlaufen einer Kollektion ohne deren innere (Daten-) Strukturen kennen zu müssen. Iterator<Integer> iter = c.iterator(); Eine ordentliche Kollektion ist iterierbar!! Sie implementiert das Interface Iterable Sie hat eine Methode Iterator diese Methode liefert einen Iterator. while ( iter.hasnext() ) { System.out.println( iter.next() ); automatische Umwandlung durch den Compiler for (int i : c ) System.out.println(i); Die Maus (der Iterator) agiert im Hintergrund Seite 14

15 Iteratoren Kollektion Iterable und Iterator Iterable Die Kollektion Iterator Der Mechanismus um die Werte der Kollektion zu durchlaufen Ein Iterator kann das jeweils nächste Element zur Verfügung stellen und testen, ob alle Elemente durchlaufen wurden. Iterator Sinn Die Kollektion kann durchlaufen werden ohne den Aufbau und die Organisation der Kollektion kennen zu müssen Geheimnisprinzip: Ich will nicht jeden in meinen Keller lassen der bei mir eine Flasche nach der anderen trinkt! java.lang Iterable<T> java.lang Iterable<T> Iterator<T> iterator(); Iterator<T> iterator(); iterator java.util List<T> java.util List<T> java.lang Iterator<T> java.lang Iterator<T> next():t next():t hasnext():boolean hasnext():boolean java.util AbstractList<T> java.util AbstractList<T> MyArrayList<T> MyArrayList<T> Seite 15 iterator

16 Iteratoren Iterator Mechanismus zum Durchlaufen einer Kollektion deren inneren Aufbau man nicht kennt und der nicht offen gelegt werden soll. Die Kollektion stellt ihren Nutzern einen Iterator zur Verfügung Sie ist damit iterierbar (erfüllt java.lang Interface Iterable<T>) Ein Iterator kann das jeweils nächste Element zur Verfügung stellen und testen, ob alle Elemente durchlaufen wurden. Jede Kollektion, die Sie schreiben, muss iterierbar sein es sei denn Sie haben wirklich gute Gründe, die dagegen sprechen. Seite 16

17 Iteratoren Beispiel: Array-basierte Liste mit eigenem Iterator import java.util.iterator; public class SimpleIterableList<E> implements Iterable<E> { private int topindex = private int arraysize; private E[] element; 0; // index of first empty position // maximal size public SimpleIterableList(int maxsize) { this.arraysize = maxsize; element = (E[]) new Object[this.arraySize]; public void add(e e) { if (topindex == arraysize) throw new IllegalStateException(); element[topindex++] = e; public Iterator<E> iterator() { public Iterator<E> iterator() { return new Iterator<E>() { return new Iterator<E>() { private int pos = 0; private int pos = 0; public boolean hasnext() { public boolean { return pos hasnext() < topindex; return pos < topindex; public E get(int index) { if (index < 0 index >= topindex) throw new IllegalArgumentException(); return element[index]; public E next() { public E next() { return element[pos++]; return element[pos++]; public void remove() { public void remove() { throw throw new UnsupportedOperationException(); new UnsupportedOperationException(); ; ; Seite 17

18 Datenstrukturen für Listen Listen auf Basis von verketteten Zellen (verkettete Listen) Listen können mit Hilfe von verketteten Zellen implementiert werden Vorteil Datentyp Liste Schnelles Einfügen / Entfernen Datenstruktur Nachteil Langsamer Indexzugriff Implementierungen in der Java-API Liste mit Verkettung LinkedList<E> Verwenden Sie die Klasse LinkedList, wenn Einfügeund Entnahme-Operationen häufig vorkommen. Seite 18

19 Datenstrukturen für Listen Listen auf Basis von verketteten Zellen (verkettete Listen) Die Java-API bietet eine Basisklasse zur Erleichterung der Implementierung eigener verketteter Listen java.util Class AbstractSequentialList<E> Implementierungsskelett für eigene Listenimplementierungen durch Ableitung Komplexe Aufgabe da ein ListIterator implementiert werden muss. Seite 19

20 Datenstrukturen für Listen Beispiel verkettete Liste: Klassisch mit null-zeiger Zur Demonstration des Umgangs mit Verkettungen hier ein einfaches Beispiel einer verketteten Liste. public class MyLinkedList<E> { private static class Node<E>{ E data; Node<E> next; Node(E data) { this.data = data;... private int nodecount = 0; private Node<E> first; first public int size() { return nodecount; Knoten speichern die Informationen und einen Verwies auf den nächsten Knoten Seite 20

21 Datenstrukturen für Listen Beispiel verkettete Liste: Klassisch mit null-zeiger Anhängen, Abfragen und Löschen eines Elements public void add(e element) { if (first == null) { first = new Node<>(element); else { Node<E> l = first; while (l.next!= null) { l = l.next; l.next = new Node<>(element); nodecount++; public E get(int i) throws NoSuchElementException { Node<E> l = first; int j = 0; while (i!= j) { if (l == null) { throw new NoSuchElementException(); j++; l = l.next; if (l == null) { throw new NoSuchElementException(); return l.data; public void delete (int i) throws NoSuchElementException { if (first == null) { throw new NoSuchElementException(); int j = 0; Node<E> act = first; // points to the j-th element Node<E> prev = null; while (j < i && act!= null) { prev = act; act = prev.next; j++; if (act == null) { throw new NoSuchElementException(); else { nodecount--; if (prev!= null) { prev.next = act.next; else { first = act.next; Seite 21

22 Datenstrukturen für Listen Beispiel verkettete Liste: Klassisch mit null-zeiger Die Liste soll iterierbar sein. Dazu muss sie das Interface java.util.iterable implementieren import java.util.iterator; import java.util.nosuchelementexception; public class MyLinkedList<E> implements Iterable<E> { private static class Node<E>{ E data; Node<E> next; Node(E data) { this.data = data; private int nodecount = 0; private Node<E> first;... public Iterator<E> iterator() { // TODO Auto-generated method stub return null; Was muss diese Methode liefern? Seite 22

23 Datenstrukturen für Listen Beispiel verkettete Liste: Klassisch mit null-zeiger Die Liste soll iterierbar sein. Dazu muss sie das Interface java.util.iterable implementieren public Iterator<E> iterator() { return new Iterator<E>() { public boolean hasnext() { // TODO Auto-generated method stub return false; public E next() { // TODO Auto-generated method stub return null; public void remove() { // TODO Auto-generated method stub ; Seite 23

24 Datenstrukturen für Listen Beispiel verkettete Liste: Klassisch mit null-zeiger Die Liste soll iterierbar sein. Dazu muss sie das Interface java.util.iterable implementieren public Iterator<E> iterator() { return new Iterator<E>() { Node<E> actnode = first; public boolean hasnext() { return actnode!= null; public E next() { if (actnode == null) { throw new NoSuchElementException(); E value = actnode.data; actnode = actnode.next; return value; public void remove() { throw new UnsupportedOperationException(); ; Seite 24 Vergleichen Sie die Funktionalität dieser Methoden mit der der entsprechenden Methoden von java.util.iterator<e>

25 Algorithmen, Datentypen und Datenstrukturen Algorithmen auf Listen Algorithmen können auf der Schnittstelle oder im Inneren einer Liste agieren. Algorithmen auf dem Datentyp Liste Beispiel Suchen: Die Suche verwendet die öffentlichen Methoden der Liste Algorithmen auf sequentiellen Datenstrukturen (Array / Verkettete-Liste) Beispiel Suchen: Die Suche operiert auf den Datenstrukturen der Listen-Implementierung public <T> boolean seach(list<t> l, T element) { for (int i= 0; i<l.size(); i++) { if (l.get(i).equals(element)) { return true; Suche in einer Liste: Laufzeit: O(n) da schlimmstenfalls auf alle n Elemente zugegriffen werden muss. return false; Angenommen die Liste ist als verkette Liste implementiert so wie MyLinkedList oben welche Komplexität hat der Algorithmus in dieser Implementierung dann? Seite 25

26 Algorithmen, Datentypen und Datenstrukturen Algorithmen auf Listen Algorithmen können auf der Schnittstelle oder im Inneren einer Liste agieren. public <T> boolean seach(list<t> l, T element) { for (int i= 0; i<l.size(); i++) { if (l.get(i).equals(element)) { return true; return false; Suche in einer Liste: Laufzeit dieses Algorithmus': O(n): Für den Zugriff l.get(i) wird konstante Laufzeit angenommen. Wenn die Liste als verkette Liste implementiert wurde, dann ist die Annahme O(1) für l.get(i) falsch und damit die Annahme O(n) für die Suche ebenfalls. Die sequentielle Suche als solche hat aber trotzdem die Komplexität O(n)! Sie ist definiert unter der Voraussetzung, dass der Zugriff auf ein Element der Liste O(1) ist. Eine Annahmen, die sinnvollerweise implizit bei allen Komplexitäts-Betrachtungen von Algorithmen auf Listen vorausgesetzt wird. Seite 26

27 Algorithmen, Datentypen und Datenstrukturen Algorithmen auf Listen Algorithmen operieren auf Datentypen, hinter denen dann die Datenstrukturen der Implementierung dieser Datentypen liegen Beispiel Suchen: public <T> boolean seach(mylinkedlist<t> l, T element) { for (int i= 0; i<l.size(); i++) { if (l.get(i).equals(element)) { return true; O(n) Operationen auf der Liste (get) return false; public class MyLinkedList<E> {... public E get(int i) throws NoSuchElementException { Node<E> l = first; int j = 0; while (i!= j) { if (l == null) { throw new NoSuchElementException(); j++; l = l.next; if (l == null) { throw new NoSuchElementException(); return l.data;... Seite 27 Jede get-operation ist O(n) Diese Suche ist O(n2). Das liegt aber nicht an am schlechten Suchalgorithmus, sondern an einer für dieses Einsatz ungeeigneten, schlechten Datenstruktur.

28 Algorithmen, Datentypen und Datenstrukturen Algorithmen und Datentypen / Datenstrukturen Für Algorithmen sind Datenstrukturen interessant. Der Aufruf einer Methode eines Datentyps ist nichts weiter als ein Methodenaufruf. (Die Veranstaltung heißt darum auch Datenstrukturen und Algorithmen ) Trotzdem spielen Datentypen eine wichtige Rolle : Datentypen erfordern die Implementierung einer bestimmten Funktionalität. Diese wird durch Algorithmen realisiert, Deren Effizienz massiv davon beeinflusst wird, mit welchen Datenstrukturen der Datentyp implementiert wurde. Sequenz / Sequentielle Datenstruktur Datentypen und Datenstrukturen werden oft verwechselt oder identifiziert Das ist teilweise berechtigt, verwirrt aber gelegentlich. Liste ist für uns ein Datentyp, bei dem unterschiedliche Datenstrukturen zur Implementierung verwendet werden können Sequenz oder Sequenzielle Datenstruktur Ein Datentyp mit der Eigenschaft dass Alle Elemente können über einen Index zugegriffen werden können der Zugriff auf jedes beliebige Element ist O(1) Seite 28

29 Algorithmen auf Sequenzen Sequenz / Sequenzielle Datenstruktur Datenstruktur (elementarer Datentyp) mit Listen-Operationen und mit Zugriffsoperationen der Komplexität O(1) Algorithmen auf Sequenzen Suchen finde ein Element (mit einer bestimmten Eigenschaft) in einer Sequenz Sortieren erzeuge eine Permutation der Elemente, derart, dass ein Ordnungskriterium erfüllt ist. Muster erkennen z.b. finde die längste gemeinsame Teilsequenz von zwei Sequenzen... Seite 29

Aufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen

Aufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen Aufgabenblatt 4 Aufgabe 1 1. Erläutern Sie in eigenen Worten die Begriffe Datenstruktur, Datentyp und abstrakter Datentyp. Nutzen Sie das Beispiel

Mehr

Kapitel 5: Iterierbare Container

Kapitel 5: Iterierbare Container Kapitel 5: Iterierbare Container Foreach-Schleife Interface Iterator Interface Iterable Iterator-Schleife und Foreach-Schleife Generische Liste mit Iteratoren Prof. Dr. O. Bittel, HTWG Konstanz Programmiertechnik

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

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

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

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 Programmierung mit Java

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.

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

Objektorientierte Programmierung. Kapitel 21: Einführung in die Collection Klassen

Objektorientierte Programmierung. Kapitel 21: Einführung in die Collection Klassen Stefan Brass: OOP (Java), 21. Collection Klassen 1/30 Objektorientierte Programmierung Kapitel 21: Einführung in die Collection Klassen Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester

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

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa AG Softech FB Informatik TU Kaiserslautern Lernziele Abstrakte Datentypen Stack und Queue zu implementieren und anzuwenden Vorteile von parametrischer Polymorphie

Mehr

Listen. Prof. Dr. Christian Böhm. in Zusammenarbeit mit Gefei Zhang. WS 07/08

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

Mehr

Inner Class. 1 public class OuterClass { 2 private int var; 3 public class InnerClass { 4 void methoda() {}; 5 } 6 public void methodb() {}; 7 }

Inner Class. 1 public class OuterClass { 2 private int var; 3 public class InnerClass { 4 void methoda() {}; 5 } 6 public void methodb() {}; 7 } Inner Class 1 public class OuterClass { 2 private int var; 3 public class InnerClass { 4 void methoda() {}; 5 } 6 public void methodb() {}; 7 } Instanz von InnerClass kann auf alle Member von OuterClass

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

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Überblick Parametrisierte Datentypen mit Java Generics Java Collections Framework Parametrisierte

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

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

19 Collections Framework

19 Collections Framework Collection = Containterklasse, die andere Objekte enthält. Inhalte: Schnittstellen Implementierungen Algorithmen Vorteile: Einheitlicher Zugriff auf Containerobjekte. Abstraktion von den Implementierungsdetails.

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

Java I Vorlesung Collections

Java I Vorlesung Collections Java I Vorlesung 5 Collections 24.5.2004 Abstrakte Klassen und Interfaces Arrays Java Collections Framework Abstrakte Klassen: Motivation Häufig will man eine Klasse schreiben, die nur als Basisklasse

Mehr

19 Collections Framework

19 Collections Framework Collection = Containterklasse, die andere Objekte enthält. Inhalte: Schnittstellen Implementierungen Algorithmen Vorteile: Einheitlicher Zugriff auf Containerobjekte. Abstraktion von den Implementierungsdetails.

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

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

Kapitel 6: Java Collection Teil I

Kapitel 6: Java Collection Teil I Kapitel 6: Java Collection Teil I Übersicht Bemerkungen Collection List LinkedList und ArrayList Queue und Deque ArrayDeque 6-1 In diesem Kapitel Die Java-API enthält eine Sammlung von generischen Schnittstellen

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

II.4.4 Exceptions - 1 -

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

Mehr

Info B VL 14: Java Collections/Reflections

Info B VL 14: Java Collections/Reflections Info B VL 14: Java Collections/Reflections Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 14: Java Collections/Reflections

Mehr

II.4.6 Collections - 1 -

II.4.6 Collections - 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.6 Collections - 1 - Typische Datenstrukturen

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

16. Dynamische Datenstrukturen

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

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

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

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

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Datenstruktur Liste Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 42 Formale Definition

Mehr

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) CS005 Objektorientierte Programmierung Bachelor of Science (Informatik) Th Letschert Felder Seite Th Letschert OOP Felder / Arrays Seite 2 Th Letschert Feld / Array Feld (auch Array) Daten unter einem

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

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

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Datentypen und Datenstrukturen Selbst definierte Datenstrukturen Innere Klassen Seite 1 Typen: 1. Kasper 2. Prinzessin 3. Großmutter

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

Programmierzertifikat Objekt-Orientierte Programmierung mit Java

Programmierzertifikat Objekt-Orientierte Programmierung mit Java Programmierzertifikat Objekt-Orientierte Programmierung mit Java Vorlesung 07: Collections Peter Thiemann Universität Freiburg, Germany SS 2008 Peter Thiemann (Univ. Freiburg) Programmierzertifikat Objekt-Orientierte

Mehr

Übung Algorithmen und Datenstrukturen

Ü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

Mehr

Abstract Data Structures

Abstract Data Structures Abstract Data Structures October 30, 2018 Algorithms & Datastructures 2 Exercises WS 2018 Dipl.-Ing. Bernhard Anzengruber University Linz, Institute for Pervasive Computing Altenberger Straße 69, A-4040

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Vorlesung 05: Generics Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1 / 19 Inhalt Generics

Mehr

Kapitel 4: Bäume i. 1. Einleitung. 2. Ein Datenmodell für Listen. 3. Doppelt-verkettete Listen. 4. Bäume. 5. Das Collections-Framework in Java

Kapitel 4: Bäume i. 1. Einleitung. 2. Ein Datenmodell für Listen. 3. Doppelt-verkettete Listen. 4. Bäume. 5. Das Collections-Framework in Java Kapitel 4: Bäume i 1. Einleitung 2. Ein Datenmodell für Listen 3. Doppelt-verkettete Listen 4. Bäume 5. Das Collections-Framework in Java Prof. Dr. Peer Kröger: EiP (WS 18/19) Teil 11: Datenstrukturen

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

ADT: Java Collections und ArrayList

ADT: Java Collections und ArrayList ADT: Java Collections und ArrayList Überblick der Klassen Object File Collections Map List Set ArrayList LinkedList SortedSet HashSet SortedSet Methode ArrayList Klasse I Beschreibung void add(int position,

Mehr

Algorithmen und Datenstrukturen CS1017

Algorithmen und Datenstrukturen CS1017 Algorithmen und Datenstrukturen CS1017 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Datenstruktur, Datentyp, Datenabstraktion Abstrakter Datentyp / Datenabstraktion Kollektionen

Mehr

Algorithmen und Datenstrukturen CS1017

Algorithmen und Datenstrukturen CS1017 Algorithmen und Datenstrukturen CS1017 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Rekursiv definierte Strukturen und strukturelle Rekursion Listen und Bäume Strukturelle Rekursion

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Java Generics und Java API Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer Programme verarbeiten Daten Häufig

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

Mengen und Multimengen

Mengen und Multimengen Überblick 21. Datenstrukturen 21.1 Einleitung 21.2 Listen 21.3 Assoziative Speicher 21.4 Bäume 21.5 Mengen 21.6 Das Collections-Framework in Java 21 Datenstrukturen 5 Mengen Einf. Progr. (WS 08/09) 870

Mehr

13. Dynamische Datenstrukturen

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

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

Abstract Data Structures

Abstract Data Structures Abstract Data Structures October 16, 2012 Algorithms & Datastructures 2 Exercises WS 2012 Dipl.-Ing. University Linz, Institute for Pervasive Computing Altenberger Straße 69, A-4040 Linz kurz@pervasive.jku.at

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 14. Bäume. Bäume 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 14. Bäume. Bäume 1 Kapitel 14 Bäume Bäume 1 Ziele Den Begriff des Baums in der Informatik kennenlernen Bäume als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf Bäumen verstehen und schreiben können

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 16 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Fragen zum zweiten Übungsblatt? 2. Vorbesprechung des dritten Übungsblatts 3. Beispielaufgaben

Mehr

Ordnung im Materiallager: Datenstrukturen II. Suchen und Sortieren im Array Verkettete Listen Rekursion

Ordnung im Materiallager: Datenstrukturen II. Suchen und Sortieren im Array Verkettete Listen Rekursion Ordnung im Materiallager: Datenstrukturen II Suchen und Sortieren im Array Verkettete Listen Rekursion Indizierter Datenbehälter Modell: Parkhaus, nummerierte Plätze interface FuhrparkIndex { // indiziert

Mehr

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

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

Mehr

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

Mehr

Einführung in die Informatik

Einführung in die Informatik Einführung in die Informatik Jochen Hoenicke Software Engineering Albert-Ludwigs-University Freiburg Sommersemester 2014 Jochen Hoenicke (Software Engineering) Einführung in die Informatik Sommersemester

Mehr

Vorlesung 07: Collections. Peter Thiemann SS 2010

Vorlesung 07: Collections. Peter Thiemann SS 2010 Vorlesung 07: Collections Peter Thiemann Universität Freiburg, Germany SS 2010 Peter Thiemann (Univ. Freiburg) JAVA 1 / 45 Inhalt Collections Iteratoren Implementierungen Das Interface Collection Beispiel:

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 17/18. Kapitel 14. Bäume. Bäume 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 17/18. Kapitel 14. Bäume. Bäume 1 Kapitel 14 Bäume Bäume 1 Ziele Den Begriff des Baums in der Informatik kennenlernen Bäume als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf Bäumen verstehen und schreiben können

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

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE38-Generics (Stand 28.09.2012) Aufgabe 1: Schauen Sie sich die generischen Klassen des Paketes java.util an. Aufgabe 2: Ausgangslage sind die folgenden

Mehr

Java Spickzettel von Panjutorials.de

Java Spickzettel von Panjutorials.de Java Spickzettel von Panjutorials.de Hallo Welt public class HalloWelt public static void main(string[] args) // Gibt "Hallo Welt" auf die Konsole aus System.out.print("Hallo Welt"); Eine eigenständige

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Vorlesung 04: Collection API Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2017 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1 / 27 Inhalt

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 Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

Mengen und Multimengen

Mengen und Multimengen Überblick 17. Datenstrukturen 17.1 Einleitung 17.2 Listen 17.3 Assoziative Speicher 17.4 Bäume 17.5 Mengen 17.6 Das Collections-Framework in Java 17.7 Zusammenfassung 17 Datenstrukturen 5 Mengen Informatik

Mehr

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

Faulheit professionell: Fertige Datenbehälter. Das Java-Collections-Framework Typsicherheit Generische Klassen

Faulheit professionell: Fertige Datenbehälter. Das Java-Collections-Framework Typsicherheit Generische Klassen Faulheit professionell: Fertige Datenbehälter Das Java-Collections-Framework Typsicherheit Generische Klassen Das Java Collections Framework Grundlegende Interfaces Das Interface List Das Interface List

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

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 13. Bäume. Bäume 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 13. Bäume. Bäume 1 Kapitel 13 Bäume Bäume 1 Ziele Den Begriff des Baums in der Informatik kennenlernen Bäume als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf Bäumen verstehen und schreiben können

Mehr

7. Verkettete Strukturen: Listen

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

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

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

Lehrstuhl für Bioinformatik Einführung in die Programmierung für Bioinformatiker Prof. B. Rost, Dr. L. Richter Blatt

Lehrstuhl für Bioinformatik Einführung in die Programmierung für Bioinformatiker Prof. B. Rost, Dr. L. Richter Blatt Lehrstuhl für Bioinformatik Einführung in die Programmierung für Bioinformatiker Prof. B. Rost, Dr. L. Richter Blatt 13 30.1.2017 Threads II Aufgabe 13.1. Synchronisiertes Lesen und Schreiben Betrachten

Mehr

Nachtrag: Vergleich der Implementierungen von Stack

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

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

Innere Klassen. Innere Klassen. Page 1. Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen.

Innere Klassen. Innere Klassen. Page 1. Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen. Innere Klassen Innere Klassen Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen. Literatur: Java Tutorial & Arnold, K., Gosling, J. und Holmes,D... Page 1 Innere Klassen Der erste

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

12 Abstrakte Klassen, finale Klassen und Interfaces

12 Abstrakte Klassen, finale Klassen und Interfaces 12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

Spezielle Datenstrukturen

Spezielle 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

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

5.3 Doppelt verkettete Listen

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

Mehr

XIII: Verkettete Listen

XIII: Verkettete Listen XIII: Verkettete Listen Verwendung von Listen in Java Das Prinzip des Iterators Implementierung von einfach verketteten Listen Implementierung von doppelt verketteten Listen Informatik I XIII: Verkettete

Mehr

java.util. Sebastian Draack Department Informations- und Elektrotechnik Department Informations- und Elektrotechnik JAVA Collection-API

java.util. Sebastian Draack Department Informations- und Elektrotechnik Department Informations- und Elektrotechnik JAVA Collection-API Sebastian java.util.* Draack JAVA Collection-API 1 Collection-API Begriffe Einleitung, Motivation Iterator Comparator Interfaces Abstrakte Klassen Konkrete Klassen Utility-Klassen Beispiele Zusammenfassung

Mehr

Wintersemester 2018/19. Kapitel 14: Bäume

Wintersemester 2018/19. Kapitel 14: Bäume Einführung in die Informatik: Programmierung und Softwareentwicklung Wintersemester 2018/19 Kapitel 14: Bäume Prof. Dr. David Sabel Lehr- und Forschungseinheit für Theoretische Informatik Institut für

Mehr

Datenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik

Datenstrukturen 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

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

CoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7.

CoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7. CoMa 04 Java II Paul Boeck Humboldt Universität zu Berlin Institut für Mathematik 7. Mai 2013 Paul Boeck CoMa 04 7. Mai 2013 1 / 13 Verzweigungen Wenn-Dann Beziehungen if (BEDINGUNG) { else if (BEDINGUNG2)

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Vorlesung 08: Collections Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2013 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1 / 39 Inhalt Collections

Mehr

Bäume und der Sequence ADT

Bäume und der Sequence ADT Bäume und der Sequence ADT Motivation: Der Sequence ADT Bei der Vorstellung verschiedener Implementierungen für Stacks, Queues und Deques wurde vor allem auf die Unterschiede zwischen Arrays fester Größe,

Mehr