Algorithmen und Datenstrukturen CS1017
|
|
- Karsten Blau
- vor 5 Jahren
- Abrufe
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
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
MehrKapitel 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
MehrEinfü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
MehrEinfü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
MehrEinfü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
MehrEinfü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.
MehrProgrammierkurs 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
MehrDatenstrukturen 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)
MehrObjektorientierte 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
MehrALP 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
MehrSoftware 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
MehrListen. Prof. Dr. Christian Böhm. in Zusammenarbeit mit Gefei Zhang. WS 07/08
Listen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang http://www.dbs.ini.lmu.de/lehre/nfinfosw WS 07/08 2 Ziele Standardimplementierungen für Listen kennenlernen Listeniteratoren verstehen
MehrInner 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
MehrProgrammierkurs 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
MehrSoftware 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
MehrEinstieg in die Informatik mit Java
1 / 15 Einstieg in die Informatik mit Java Collections Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 15 1 Überblick Collections 2 Hierarchie von Collections 3 Verwendung
MehrLineare 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
Mehr19 Collections Framework
Collection = Containterklasse, die andere Objekte enthält. Inhalte: Schnittstellen Implementierungen Algorithmen Vorteile: Einheitlicher Zugriff auf Containerobjekte. Abstraktion von den Implementierungsdetails.
MehrBä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
MehrJava 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
Mehr19 Collections Framework
Collection = Containterklasse, die andere Objekte enthält. Inhalte: Schnittstellen Implementierungen Algorithmen Vorteile: Einheitlicher Zugriff auf Containerobjekte. Abstraktion von den Implementierungsdetails.
Mehr12 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
MehrAbstrakte 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
MehrKapitel 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
MehrProgrammieren I. Kapitel 13. Listen
Programmieren I Kapitel 13. Listen Kapitel 13: Listen Ziel: eigene Datenstrukturen erstellen können und eine wichtige vordefinierte Datenstruktur( familie) kennenlernen zusammengehörige Elemente zusammenfassen
MehrII.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
MehrInfo 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
MehrII.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
MehrGrundkonzepte 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.
Mehr16. Dynamische Datenstrukturen
Datenstrukturen 6. Dynamische Datenstrukturen Eine Datenstruktur organisiert Daten so in einem Computer, dass man sie effizient nutzen kann. Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange
MehrJAVA 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)
MehrVerkettete 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
MehrKapitel 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
MehrSoftware 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
MehrCS1005 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
MehrProblem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um. Dynamische Anpassung der Größe
Maximale Größe?! Problem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um Dynamische Anpassung der Größe Praktische Informatik I, HWS 2009, Kapitel 10 Seite
MehrStacks, Queues & Bags. Datenstrukturen. Pushdown/Popup Stack. Ferd van Odenhoven. 19. September 2012
, Queues & Ferd van Odenhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering 19. September 2012 ODE/FHTBM, Queues & 19. September 2012 1/42 Datenstrukturen Elementare Datenstrukturen
MehrCS1005 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
Mehr3. Ü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
MehrProgrammierzertifikat 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 Sommersemester 2017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. (Sortierte) Listen 2. Stacks & Queues 3. Datenstrukturen 4. Rekursion und vollständige Induktion
MehrAbstract 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
MehrProgrammieren 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
MehrKapitel 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
MehrProgrammieren 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
MehrADT: 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,
MehrAlgorithmen und Datenstrukturen CS1017
Algorithmen und Datenstrukturen CS1017 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Datenstruktur, Datentyp, Datenabstraktion Abstrakter Datentyp / Datenabstraktion Kollektionen
MehrAlgorithmen 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
MehrVorlesung 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
MehrSchnittstellen, 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
MehrMengen 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
Mehr13. Dynamische Datenstrukturen
Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Sortierte Liste 40 40 Motivation: Stapel ( push, pop, top, empty ) Wir brauchen einen neuen
MehrProgrammieren 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
MehrAbstract 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
MehrEinfü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 Sommersemester 16 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Fragen zum zweiten Übungsblatt? 2. Vorbesprechung des dritten Übungsblatts 3. Beispielaufgaben
MehrOrdnung 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
MehrGliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen
Gliederung 5. Compiler 1. Struktur eines Compilers 2. Syntaxanalyse durch rekursiven Abstieg 3. Ausnahmebehandlung 4. Arrays und Strings 6. Sortieren und Suchen 1. Grundlegende Datenstrukturen 2. Bäume
MehrEinführung in die Objektorientierte Programmierung Vorlesung 18: Lineare Datenstrukturen. Sebastian Küpper
Einführung in die Objektorientierte Programmierung Vorlesung 18: Lineare Datenstrukturen Sebastian Küpper Unzulänglichkeit von Feldern Wenn ein Unternehmen alle Rechnungen eines Jahres verwalten möchte,
MehrEinfü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
MehrVorlesung 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:
MehrEinfü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
MehrALP II Dynamische Datenmengen Datenabstraktion (Teil 2)
ALP II Dynamische Datenmengen Datenabstraktion (Teil 2) O1 O2 O3 O4 SS 2012 Prof. Dr. Margarita Esponda 49 Einfach verkettete Listen O1 O2 O3 50 Einführung Einfach verkettete Listen sind die einfachsten
MehrProgrammierkurs 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
MehrJava 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
MehrProgrammieren 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
MehrEinfü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
MehrMengen 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
MehrTeil 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
MehrFaulheit 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
MehrTeil 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
MehrEinfü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
Mehr7. Verkettete Strukturen: Listen
7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Version: 4. Jan. 2016 Vergleich: Schwerpunkte Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++):
MehrSchwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen
Schwerpunkte 7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Vergleich: Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++): über Datenstrukturen
Mehr1 Abstrakte Datentypen
1 Abstrakte Datentypen Spezifiziere nur die Operationen! Verberge Details der Datenstruktur; der Implementierung der Operationen. == Information Hiding 1 Sinn: Verhindern illegaler Zugriffe auf die Datenstruktur;
MehrLehrstuhl 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
MehrNachtrag: Vergleich der Implementierungen von Stack
Nachtrag: Vergleich der Implementierungen von Stack In der letzten Vorlesung hatten wir zwei Implementierung der Klasse Stack: eine Implementierung als Liste (Array): liststack eine Implementierung als
MehrVerkettete Datenstrukturen: Listen
Verkettete Datenstrukturen: Listen 2 Listen Formal: Liste = endliche Folge von Elementen [a 1, a 2,..., a n ]. Spezialfall: leere Liste [ ]. Länge einer Liste = Anzahl der Elemente (bei leerer Liste: 0).
MehrInnere 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
MehrProgrammieren 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
Mehr12 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,
MehrSpezielle Datenstrukturen
Spezielle Datenstrukturen Stapel (Stack) Beschreibung der Datenstruktur Stapel Ein Stapel (engl. Stack), auch Stapelspeicher oder Keller bzw. Kellerspeicher genannt, ist eine Datenstruktur, in der Daten
MehrJava 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]...
Mehr5.3 Doppelt verkettete Listen
5.3 Doppelt verkettete Listen Einfach verkettete Listen unterstützen das Einfügen und Löschen am Anfang in konstanter Zeit; für das Einfügen und Löschen am Ende benötigen sie jedoch lineare Laufzeit Doppelt
MehrXIII: 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
Mehrjava.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
MehrWintersemester 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
MehrDatenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik
5. Datenstrukturen Motivation Datenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik Eine Datenstruktur speichert gegebene Daten und stellt auf diesen bestimmte Operationen
Mehr4.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.
MehrCoMa 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)
MehrProgrammieren 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
MehrBä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