Algorithmen und Programmierung III

Größe: px
Ab Seite anzeigen:

Download "Algorithmen und Programmierung III"

Transkript

1 Musterlösung zum 5. Aufgabenblatt zur Vorlesung WS 2006 Algorithmen und Programmierung III von Christian Grümme Aufgabe 1 Implementieren von ADTs Testlauf der Klasse TestDeque in der z05a1.jar: 10 Punkte Erzeuge Deques. Füge nun 2500 Elemente zu den Deques hinten hinzu. Die Deque in der Liste hat 47 Millisekunden gebraucht. Die Deque im Feld hat 15 Millisekunden gebraucht. Füge nun 2500 Elemente zu den Deques vorne hinzu. Die Deque in der Liste hat 16 Millisekunden gebraucht. Die Deque im Feld hat 16 Millisekunden gebraucht. Füge nun je 5000 Elemente an zufaelligen Stellen ein. Die Deque in der Liste hat 15 Millisekunden gebraucht. Die Deque im Feld hat 16 Millisekunden gebraucht. Nehme nun je 5000 Elemente an zufaelligen Stellen raus. Die Deque in der Liste hat 15 Millisekunden gebraucht. Die Deque im Feld hat 16 Millisekunden gebraucht. Es befinden sich noch Elemente in der Deque in der Liste. Es befinden sich noch Elemente in der Deque im Feld. Lösche die restlichen Elemente aus den Deques. Die Deque in der Liste hat 0 Millisekunden gebraucht. Die Deque im Feld hat 31 Millisekunden gebraucht. Die Laufzeit des Deques im Feld hängt sehr von dessen Initalizierungsgrösse ab. Ist diese größ, muss das Feld wenig verändert werden und die Deque im Feld ist dann schneller als die Deque in der Liste. Interface Deque 1 /** 2 * Algorithmen und Programmierung III WS2006 /07 3 * 5. Aufgabenblatt 4 * Aufgabe 1 5 */ 6 package alp3. zettel05. a1; 7 8 import java. util. NoSuchElementException ; 9 10 /** 11 * Dies ist eine Double - Ended - Queue. 12 * Die Deque ( Double - Ended - Queue ) ist eine Warteschlange wie die Queue, 13 * nur dass auf beiden Seiten Elemente hinzugefügt und wieder entfernt 14 * werden können. 15 * 16 Christian Grümme 17 * 18 <T> Typ der Elemente 19 */ 20 public interface Deque <T> { 21

2 22 /** 23 * Fügt gegebenes Element vorne an die Dequeue an. 24 value Das vorne einzufügende Element 25 */ 26 public void insertfirst ( T value ); /** 29 * Gibt das vorderste Element zurück und entfernt es aus der Dequeue. 30 Das erste bzw. vorderste Element 31 NoSuchElementException Wird geworfen, wenn die Deque leer ist 32 */ 33 public T removefirst () throws NoSuchElementException ; /** 36 * Gibt das erste bzw. vorderste Element als Ergebnis zurück. 37 Das erste bzw. vorderste Element 38 NoSuchElementException Wird geworfen, wenn die Deque leer ist 39 */ 40 public T first () throws NoSuchElementException ; /** 43 * Fügt gegebenes Element hinten an die Dequeue an. 44 value Das hinten einzufügende Element 45 */ 46 public void insertlast ( T value ); /** 49 * Gibt das hinterste Element zurück und entfernt es aus der Dequeue. 50 Ist mindestens ein Element vorhanden 51 NoSuchElementException Wird geworfen, wenn die Deque leer ist 52 */ 53 public T removelast () throws NoSuchElementException ; /** 56 * Gibt das letzte bzw. hinterste Element als Ergebnis zurück. 57 Das letzte bzw. hinterste Element 58 NoSuchElementException Wird geworfen, wenn die Deque leer ist 59 */ 60 public T last () throws NoSuchElementException ; /** 63 * Prüft, ob die Double - Ended - Queue leer ist. 64 Ist mindestens ein Element vorhanden 65 */ 66 public boolean isempty (); /** 69 * Gibt die Anzahl der in der Double - Ended - Queue enthaltenen 70 * Elemente zurück. 71 Anzahl der Elemente in der Double - Ended - Queue 72 */ 73 public int size (); 74 } Diese Klasse benutzt meine Implementierung der einfachverketteten Liste vom 3. Übungszettel. class ListDeque 1 /** 2 * Algorithmen und Programmierung III WS2006 /07 3 * 5. Aufgabenblatt 4 * Aufgabe 1 5 */ 6 package alp3. zettel05. a1; 7 8 import java. util. NoSuchElementException ; 9 import alp3. zettel03. a2.*; /** 12 * Implementierung der Deque durch eine doppelt verkettete Liste. 13 * <br > 14 * <br > 15 * Diese doppelt verkettete Liste ist so implemetiert, dass hier

3 16 * alle Methoden, außer tostring (), eine asymptotische Laufzeit 17 * von O (1) haben. 18 * 19 * <br > 20 Christian Grümme 21 * 22 <T> Typ der Elemente 23 * 24 */ 25 public class ListDeque <T> implements Deque <T> { /** Interne Liste zur Verwaltung der Elemente */ 28 List <T> list ; /** Konstruktor */ 31 public ListDeque () { 32 this. list = new DoubleLinkedList <T >() ; 33 } /* (non - Javadoc ) 36 alp3. zettel05.a1. Deque # first () 37 */ 38 public T first () throws NoSuchElementException { 39 try { 40 return this. list. get (0) ; 41 } catch ( IndexOutOfBoundsException e) { 42 throw new NoSuchElementException (" Deque is Emtpy "); 43 } 44 } /* (non - Javadoc ) 47 alp3. zettel05.a1. Deque # get () 48 */ 49 public T removelast () throws NoSuchElementException { 50 // Löscht das letzte Element in der Liste und gibt es zurück 51 try { 52 return this. list. remove ( this. list. size () -1); 53 } catch ( IndexOutOfBoundsException e) { 54 throw new NoSuchElementException (" Deque is Emtpy "); 55 } 56 } /* (non - Javadoc ) 59 alp3. zettel05.a1. Deque # isempty () 60 */ 61 public boolean isempty () { 62 return this. list. isempty (); 63 } /* (non - Javadoc ) 66 alp3. zettel05.a1. Deque # last () 67 */ 68 public T last () throws NoSuchElementException { 69 try { 70 return this. list. get ( this. list. size () -1); 71 } catch ( IndexOutOfBoundsException e) { 72 throw new NoSuchElementException (" Deque is Emtpy "); 73 } 74 } /* (non - Javadoc ) 77 alp3. zettel05.a1. Deque # pop () 78 */ 79 public T removefirst () throws NoSuchElementException { 80 // Löscht das vorderste Element in der Liste und gibt es zurück 81 try { 82 return this. list. remove (0) ; 83 } catch ( IndexOutOfBoundsException e) { 84 throw new NoSuchElementException (" Deque is Emtpy "); 85 } 86 } /* (non - Javadoc ) 89 alp3. zettel05.a1. Deque # push ( java. lang. Object ) 90 */

4 91 public void insertfirst ( T value ) { 92 // Füge vorne in die Liste ein 93 this. list. add (0, value ); 94 } /* (non - Javadoc ) 97 alp3. zettel05.a1. Deque # put ( java. lang. Object ) 98 */ 99 public void insertlast ( T value ) { 100 // Füge hinten in die Liste ein 101 this. list. add ( value ); 102 } /* (non - Javadoc ) 105 alp3. zettel05.a1. Deque # size () 106 */ 107 public int size () { 108 return this. list. size (); 109 } /* (non - Javadoc ) 112 java. lang. Object # tostring () 113 */ 114 public String tostring () { 115 return this. list. tostring (); 116 } 117 } class ArrayDeque 1 /** 2 * Algorithmen und Programmierung III WS2006 /07 3 * 5. Aufgabenblatt 4 * Aufgabe 1 5 */ 6 package alp3. zettel05. a1; 7 8 import java. util. NoSuchElementException ; 9 10 /** 11 * Implementierung der Deque durch Speicherung in deinem Feld. 12 * <br > 13 * <br > 14 * Diese die Methode tostring () hat eine asymptotische Laufzeit von O( n). 15 * <br > 16 * normalizearray () hat im Worst Case eine asymptotische Laufzeit von O( n). 17 * Da insertfirst (), removefirst (), insertlast () und removelast () 18 * normalizearray () aufrufen können, haben sie im WorstCase auch eine 19 * asymptotische Laufzeit von O( n). Aber das amotisiert sich im Normalfall, 20 * so dass diese Methode im Mittel eine asymptotische Laufzeit von O (1). 21 * <br > 22 * Die restlichen drei Methoden, first (), last (9 und size () haben eine 23 * asymptotische Laufzeit von O (1). 24 * 25 * <br > 26 Christian Grümme 27 * 28 <T> Typ der Elemente 29 * 30 */ 31 public class ArrayDeque <T> implements Deque <T> { /** Feld zum Speichern der Elemente */ 34 private T[] elements ; 35 /** Größe mit der das Feld initializiert wurde */ 36 private int init_size = 64; 37 /** Zeiger auf den nächsten ( rechten ) leeren Feldplatz */ 38 private int top ; 39 /** Zeiger auf das vorderste ( links ) Element 40 * Wenn das Feld leer ist, dann entspicht es top. */ 41 private int bottom ; /** 44 * Konstruktor, der das interne Feld standardmäßig mit 45 * einer Größe von 64 initalisiert.

5 46 * 47 */ (" unchecked ") 49 public ArrayDeque () { 50 this. elements = ( T []) new Object [ this. init_size ]; 51 // Damit in der Mitte angefangen wird einzufügen 52 this. top = this. init_size /2; 53 this. bottom = this. init_size /2; 54 } /** 57 * Konstruktor inizialisiert das Feld mit der gegebenen Größe. 58 size Inizalisierungsgröße vom internem Feld 59 */ (" unchecked ") 61 public ArrayDeque ( int size ) { 62 this. init_size = size ; 63 this. elements = ( T []) new Object [ this. init_size ]; 64 // Damit in der Mitte angefangen wird einzufügen 65 this. top = this. init_size /2; 66 this. bottom = this. init_size /2; 67 } /* (non - Javadoc ) 70 alp3. zettel05.a1. Deque # first () 71 */ 72 public T first () throws NoSuchElementException { 73 if( this. top == this. bottom ) { 74 throw new NoSuchElementException (" Deque is Emtpy "); 75 } else { 76 return this. elements [ this. bottom ]; 77 } 78 } /* (non - Javadoc ) 81 alp3. zettel05.a1. Deque # get () 82 */ 83 public T removelast () throws NoSuchElementException { 84 if( this. top == this. bottom ) { 85 throw new NoSuchElementException (" Deque is Emtpy "); 86 } else { 87 T result = this. elements [ this. top -1]; 88 // Für den Garbish Collector 89 this. elements [ this.top -1] = null ; 90 this.top - -; 91 this. normalizearray (); 92 return result ; 93 } 94 } /* (non - Javadoc ) 97 alp3. zettel05.a1. Deque # isempty () 98 */ 99 public boolean isempty () { 100 return ( this. top == this. bottom ); 101 } /* (non - Javadoc ) 104 alp3. zettel05.a1. Deque # last () 105 */ 106 public T last () throws NoSuchElementException { 107 if( this. top == this. bottom ) { 108 throw new NoSuchElementException (" Deque is Emtpy "); 109 } else { 110 return this. elements [ this.top -1]; 111 } 112 } /* (non - Javadoc ) 115 alp3. zettel05.a1. Deque # pop () 116 */ 117 public T removefirst () throws NoSuchElementException { 118 // Löscht das vorderste Element in der Liste und gibt es zurück 119 if( this. top == this. bottom ) { 120 throw new NoSuchElementException (" Deque is Emtpy ");

6 121 } else { 122 T result = this. elements [ this. bottom ]; 123 // Für den Garbish Collector 124 this. elements [ this. bottom ] = null ; 125 this. bottom ++; 126 this. normalizearray (); 127 return result ; 128 } 129 } /* (non - Javadoc ) 132 alp3. zettel05.a1. Deque # push ( java. lang. Object ) 133 */ 134 public void insertfirst ( T value ) { 135 if( this. bottom == 0) { 136 // Zeiger aus das Vorderste Element ist ganz vorne angekommen 137 this. normalizearray (); 138 } 139 // Speicher Verweis auf das neue Element 140 this. elements [ this. bottom ] = value ; 141 // Dekrementiere Zeiger auf den nächsten leeren Platz im Feld 142 this. bottom - -; 143 } /* (non - Javadoc ) 146 alp3. zettel05.a1. Deque # put ( java. lang. Object ) 147 */ 148 public void insertlast ( T value ) { 149 if( this. top == this. elements. length ) { 150 // Feld ist voll, erzeuge neues mit doppelter Größe 151 this. normalizearray (); 152 } 153 // Speicher Verweis auf das neue Element 154 this. elements [ this. top ] = value ; 155 // Inkrementiere Zeiger auf den nächsten leeren Platz im Feld 156 this. top ++; 157 } /* (non - Javadoc ) 160 alp3. zettel05.a1. Deque # size () 161 */ 162 public int size () { 163 return ( this. top - this. bottom ); 164 } /* (non - Javadoc ) 167 java. lang. Object # tostring () 168 */ 169 public String tostring () { 170 StringBuffer sb = new StringBuffer (); 171 if ( this. top == this. bottom ) { 172 // Es existiert kein Element im Feld 173 sb. append (" null <-->"); 174 } else { 175 for ( int i = this. bottom ; i < this. top ; i ++) { 176 sb. append ( this. elements [i]. tostring ()); 177 sb. append (" <--> "); 178 } 179 } 180 return sb. tostring (); 181 } /** 184 * Diese Methode überprüft, ob das interne Feld verändert werden muss. 185 * 1. Fall : Es ist schon zu mehr als zu 2/3 belegt. 186 * Dann wird die Feldgröße verdoppelt und die Elemente werden 187 * so kopiert, dass sich links und rechts von der Mitte des 188 * Feldes gleich viele Elemente befinden. 189 * 2. Fall : Es ist zu weniger als zu 1/4 belegt. 190 * Dann wird die Feldgröße halbiert und die Elemente werden so 191 * kopiert, dass sich links und rechts von der Mitte des Feldes 192 * gleich viele Elemente befinden. 193 * 3. Fall : Fall 1 und 2 treffen nicht zu, aber Zeiger, also bottom oder 194 * top, stoßen an die Grenzen des Feldes. 195 * Nun werden nur die Elemente so verschoben, dass sich links

7 196 * und rechts von der Mitte des Feldes gleich viele Elemente 197 * befinden. 198 */ (" unchecked ") 200 private void normalizearray () { 201 // Bestimme Mitte der Befüllung 202 int middle = ( this. top - this. bottom )/2 + this. bottom ; 203 int size = this. top - this. bottom ; 204 if (( this. top - this. bottom ) >= ((2 * this. elements. length ) / 3)) { 205 // Feld ist min. zu 2/3 gefüllt, also erdopple ich das Feld 206 T[] newarray = ( T []) new Object [ this. elements. length *2]; 207 // Berechne den neuen Index des vordersten Elements 208 int new_middle = newarray. length /2; 209 int new_bottom = this. bottom - ( middle - new_middle ); 210 // Kopiere alles Einträge ins neue Feld 211 System. arraycopy ( this. elements, this. bottom, newarray, 212 new_bottom, size ); 213 // Setzte Zeiger neu 214 this. bottom = new_bottom ; 215 this. top = new_bottom + size ; 216 // Neues Array ist neues globles Feld 217 this. elements = newarray ; 218 } else if (( this. top - this. bottom ) <= ( this. elements. length / 4) 219 && ( this. elements. length > this. init_size ) ) { 220 // Feld weniger als zu ein Viertel gefüllt 221 // Erzeuge neues mit halber Größe 222 T[] newarray = ( T []) new Object [ this. elements. length /2]; 223 // Berechne den neuen Index des vordersten Elements 224 int new_middle = newarray. length /2; 225 int new_bottom = this. bottom - ( middle - new_middle ); 226 // Kopiere alles Einträge ins neue Feld 227 System. arraycopy ( this. elements, this. bottom, newarray, 228 new_bottom, size ); 229 // Setzte Zeiger neu 230 this. bottom = new_bottom ; 231 this. top = new_bottom + size ; 232 // Neues Array ist neues globles Feld 233 this. elements = newarray ; 234 } else if( this. bottom == 0 this. top == this. elements. length ) { 235 /* Feld ist nicht zu voll oder zu leer, aber Ränder erreicht, 236 also verschiebe nur die Elemente in die Mitte */ 237 // Berechne den neuen Index des vordersten Elements 238 int new_middle = this. elements. length /2; 239 int new_bottom = this. bottom - ( middle - new_middle ); 240 // Verschiebe Elemente 241 System. arraycopy ( this. elements, this. bottom, this. elements, 242 new_bottom, size ); 243 // Setzte Zeiger neu 244 this. bottom = new_bottom ; 245 this. top = new_bottom + size ; 246 } 247 } 248 } Aufgabe 2 Datenabstraktion in Sprachen Aufgabe 3 Ausnahmen und Fehler 10 Punkte 10 Punkte

Algorithmen und Programmierung III

Algorithmen und Programmierung III Musterlösung zum 4. Aufgabenblatt zur Vorlesung WS 2006 Algorithmen und Programmierung III von Christian Grümme Aufgabe 1 Amortisierte Analyse 10 Punkte Zu erst betrachte ich wie oft die letzte Ziffer

Mehr

Algorithmen und Programmierung III

Algorithmen und Programmierung III Musterlösung zum 3. Aufgabenblatt zur Vorlesung WS 2006 Algorithmen und Programmierung III von Christian Grümme Aufgabe 1 Potenzieren von Matrizen Testlauf der Klasse Matrix.java: 10 Punkte Erzeuge Matrix

Mehr

ALP II Dynamische Datenmengen Datenabstraktion

ALP II Dynamische Datenmengen Datenabstraktion ALP II Dynamische Datenmengen Datenabstraktion O1 O2 O3 O4 SS 2012 Prof Dr Margarita Esponda M Esponda-Argüero 1 Dynamische Datenmengen Dynamische Datenmengen können durch verschiedene Datenstrukturen

Mehr

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

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

Lösungshinweise/-vorschläge zum Übungsblatt 11: Software-Entwicklung 1 (WS 2017/18)

Lösungshinweise/-vorschläge zum Übungsblatt 11: Software-Entwicklung 1 (WS 2017/18) Dr. Annette Bieniusa Mathias Weber, M. Sc. Peter Zeller, M. Sc. TU Kaiserslautern Fachbereich Informatik AG Softwaretechnik Lösungshinweise/-vorschläge zum Übungsblatt 11: Software-Entwicklung 1 (WS 2017/18)

Mehr

Große Übung Praktische Informatik 1

Große Übung Praktische Informatik 1 Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,

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

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

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

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

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

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

6. Verkettete Strukturen: Listen

6. Verkettete Strukturen: Listen 6. Verkettete Strukturen: Listen 5 K. Bothe, Inst. f ür Inf., HU Berlin, PI, WS 004/05, III.6 Verkettete Strukturen: Listen 53 Verkettete Listen : Aufgabe Vergleich: Arrays - verkettete Listen Listenarten

Mehr

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

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

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

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

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

Informatik II Übung 5 Gruppe 3

Informatik II Übung 5 Gruppe 3 Informatik II Übung 5 Gruppe 3 Leyna Sadamori leyna.sadamori@inf.ethz.ch Informatik II Übung 5 Leyna Sadamori 29. März 2017 1 Administrativ Die Übung am 5. April fällt aus! Bitte in die Übung in HG G 3

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

12.3 Ein Datenmodell für Listen

12.3 Ein Datenmodell für Listen Zweiter Versuch: Wir modellieren ein Element der Liste zunächst als eigenständiges Objekt. Dieses Objekt hält das gespeicherte Element. Andererseits hält das Element- Objekt einen Verweis auf das nächste

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 6 (14.5.2014) Abstrakte Datentypen, Einfache Datenstrukturen Algorithmen und Komplexität Abstrakte Datentypen : Beispiele Dictionary: (auch:

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

Konkatenation zweier Listen mit concat

Konkatenation zweier Listen mit concat Ein Datenmodell für Listen Konkatenation zweier Listen mit concat Was ist an der Konkatenation etwas unschön? Man muss die vordere Liste einmal durchgehen, um den letzten Nachfolger (urspr. null zu erhalten,

Mehr

Kapitel 4: Datentyp Keller und Schlange

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

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Semestralklausur Einführung in die Programmierung Semestralklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList

Mehr

4.2 Daten und Datenstrukturen

4.2 Daten und Datenstrukturen 4.2 Daten und Datenstrukturen Daten Fundamentale Objekte, die in der Rechenanlage erfasst gespeichert ausgegeben (angezeigt, gedruckt) bearbeitet gelöscht werden können. Beispiele: Zahlen, Zeichenfolgen

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

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor Albert-Ludwigs-Universität Freiburg Institut für Informatik Einführung in die Informatik Sommersemester 2013 PD Dr. Cyrill Stachniss Dr. Rainer Kümmerle Übungsblatt 13 Abgabe / Besprechung in Absprache

Mehr

Kapitel 3: Datentyp Keller und Schlange

Kapitel 3: Datentyp Keller und Schlange Kapitel 3: Datentyp Keller und Schlange Keller (Stack) Schlange (Queue) Prof. Dr. O. Bittel, HTWG Konstanz Programmiertechnik II Datentyp Keller und Schlange SS 2019 3-1 Definition Keller und seine Operationen

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

Interface. So werden Interfaces gemacht

Interface. So werden Interfaces gemacht Design Ein Interface (=Schnittstelle / Definition) beschreibt, welche Funktionalität eine Implementation nach Aussen anzubieten hat. Die dahinter liegende Algorithmik wird aber der Implementation überlassen.

Mehr

Einfach verkettete Liste

Einfach verkettete Liste 5. Listen Verkettete Listen Einfach verkettete Liste Für jedes einzelne Element der Liste wird ein Hilfsobjekt erzeugt. Jedes Hilfsobjekt enthält zwei Instanzvariablen: den zu speichernden Wert bzw. einen

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Fallstudie: Lauftagebuch Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 21 Erstellen einer

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Beispielprüfung CuP WS 2015/2016

Beispielprüfung CuP WS 2015/2016 Beispielprüfung CuP WS 2015/2016 Univ.-Prof. Dr. Peter Auer 23. Dezember 2015 Informationen zur Prüfung Die Prüfung wird als Multiple-Choice-Test mit 10 Fragen am Computer abgehalten. (Bei manchen Fragen

Mehr

Abgabe: (vor der Vorlesung) Aufgabe 3.1 (P) Master-Theorem

Abgabe: (vor der Vorlesung) Aufgabe 3.1 (P) Master-Theorem TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2009 Grundlagen: Algorithmen und Datenstrukturen Übungsblatt 3 Prof. Dr. Helmut Seidl, S. Pott,

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 6 (6.5.2016) Abstrakte Datentypen, Einfache Datenstrukturen Algorithmen und Komplexität Abstrakte Datentypen : Beispiele Dictionary: (auch:

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 22 Einstieg in die Informatik mit Java Grundlagen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White

Mehr

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor Albert-Ludwigs-Universität Freiburg Institut für Informatik Einführung in die Informatik Sommersemester 2018 Prof. Dr. Wolfram Burgard Andreas Kuhner Daniel Büscher Übungsblatt 13 Abgabe / Besprechung

Mehr

SS10 Algorithmen und Datenstrukturen 2. Kapitel Fundamentale Datentypen und Datenstrukturen

SS10 Algorithmen und Datenstrukturen 2. Kapitel Fundamentale Datentypen und Datenstrukturen SS10 Algorithmen und Datenstrukturen 2. Kapitel Fundamentale Datentypen und Datenstrukturen Martin Dietzfelbinger April 2010 FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel 2 Datentyp

Mehr

1 of :17:14

1 of :17:14 7 public class Main 10 /** 11 * @param args the command line arguments 1 */ 13 public static void main(string[] args) 14 { 15 // Aufgabe 1 16 System.out.println("##### AUFGABE 1 #####"); 17 // Stack initialisieren

Mehr

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

1 Klassen anlegen und Objekte erzeugen

1 Klassen anlegen und Objekte erzeugen Werkzeugkiste Java 1 1 Klassen anlegen und Objekte erzeugen Klassengrundgerüst 1 /** 2 * Write a description of class Testklasse here. 3 * 4 * @author ( your name ) 5 * @version (a version number or a

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

1 Klassen anlegen und Objekte erzeugen

1 Klassen anlegen und Objekte erzeugen Werkzeugkiste Java 1 1 Klassen anlegen und Objekte erzeugen Klassengrundgerüst 1 /** 2 * Write a description of class Testklasse here. 3 * 4 * @author ( your name ) 5 * @version (a version number or a

Mehr

Die objektorientierte Mühle Marc-Oliver Pahl

Die objektorientierte Mühle Marc-Oliver Pahl Die objektorientierte Mühle Marc-Oliver Pahl Es war einmal ein König, der machte Urlaub außerhalb seines Königreiches. Dort sah er eine tolle Einrichtung: Ein Haus, zu dem die Bauern ihr Korn fuhren und

Mehr

FAKULTÄT FÜR INFORMATIK

FAKULTÄT FÜR INFORMATIK TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 2006/2007 Praktikum Grundlagen der Programmierung Lösungsvorschläge zu Blatt 11 F. Forster,

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

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4. ! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.4 Exceptions - 1 - Ausnahmen (Exceptions( Exceptions) Treten auf, wenn zur

Mehr

Objektorientierung III

Objektorientierung III Lehrstuhl für Bioinformatik Einführung in die Programmierung für Bioinformatiker Prof. B. Rost, Dr. L. Richter Blatt 10 9.1.2017 Objektorientierung III Aufgabe 10.1. Wir sind doch alle gleich In der Vorlesung

Mehr

Informatik II Prüfungsvorbereitungskurs

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

Mehr

Informatik II Übung 5

Informatik II Übung 5 Informatik II Übung 5 Gruppe 2 Carina Fuss cfuss@student.ethz.ch 28.3.2018 Carina Fuss 28.3.2018 1 Übung 5 Administratives/Tipps zu Eclipse Nachbesprechung Übung 4 kurze Demo zu Stacks Java Pakete Call

Mehr

Kapitel 3: Datentyp Liste

Kapitel 3: Datentyp Liste Kapitel 3: Datentyp Liste! Einleitung! Listen-Interface! Liste als Feld: ArrayList! Einfach verkettete Listen! Hilfskopfknotentechnik! Liste als einfach verkettete Liste: LinkedList! Doppelt verkettete

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

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

Fallstudie: Online-Statistik

Fallstudie: Online-Statistik Fallstudie: Online-Statistik Ziel: Klasse / Objekt, welches Daten konsumiert und zu jeder Zeit Statistiken, z.b. Mittelwert, Varianz, Median (etc.) ausgeben kann Statistics s = new Statistics(maxSize);...

Mehr

Verkettete Listen. DVG Verkettete Listen 1

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

Mehr

II.4.4 Exceptions - 1 -

II.4.4 Exceptions - 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.4 Exceptions - 1 - Ausnahmen (Exceptions)

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Kürzeste Wege, Heaps, Hashing Heute: Kürzeste Wege: Dijkstra Heaps: Binäre Min-Heaps Hashing:

Mehr

Lösungshinweise/-vorschläge zum Übungsblatt 8: Software-Entwicklung 1 (WS 2017/18)

Lösungshinweise/-vorschläge zum Übungsblatt 8: Software-Entwicklung 1 (WS 2017/18) Dr. Annette Bieniusa Mathias Weber, M. Sc. Peter Zeller, M. Sc. TU Kaiserslautern Fachbereich Informatik AG Softwaretechnik Lösungshinweise/-vorschläge zum Übungsblatt 8: Software-Entwicklung 1 (WS 2017/18)

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

Grundlagen der Informatik / Algorithmen und Datenstrukturen. Aufgabe 132

Grundlagen der Informatik / Algorithmen und Datenstrukturen. Aufgabe 132 Aufgabenstellung Gehen Sie bei der Bearbeitung der folgenden Teilaufgabenstellungen von den Beispiel-Implementierungen der Klassen ListNodeSL und LinkedList für einfach verkettete Listen aus, wie sie in

Mehr

Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen?

Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen? Generic Programming without Generics from JAVA5 Motivation Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen? Ein Bespiel: sie haben bereits eine Klasse zur Multiplikation von Matrizen

Mehr

2.2 Spezifikation abstrakter Datentypen. 2.3 Implementierung und Anwendung von ADT. 2.4 Datenabstraktion und Objektorientierung

2.2 Spezifikation abstrakter Datentypen. 2.3 Implementierung und Anwendung von ADT. 2.4 Datenabstraktion und Objektorientierung Inhaltsverzeichnis (update) 2 Datenabstraktion 2.1 Begriffe 2.2 Spezifikation abstrakter Datentypen 2.2.1 Algebraische Spezifikation 2.2.2 Modellierende Spezifikation 2.3 Implementierung und Anwendung

Mehr

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter Fallstudie: Arithmetische Ausdrücke AG Softech FB Informatik TU Kaiserslautern Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick

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

Stack und Queue. Thomas Schwotzer

Stack und Queue. Thomas Schwotzer Stack und Queue Thomas Schwotzer 1 Einführung Wir kennen eine Reihe von Java-Strukturen zur Verwaltung von Daten. Wir wollen aus Gründen der Übung zwei Datenstrukturen implementieren, die sicherlich bereits

Mehr

Stapel (Stack, Keller)

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

Mehr

Programmieren 2 15 Abstrakte Datentypen

Programmieren 2 15 Abstrakte Datentypen Programmieren 2 15 Abstrakte Datentypen Bachelor Medieninformatik Sommersemester 2015 Dipl.-Inform. Ilse Schmiedecke schmiedecke@beuth-hochschule.de 1 Verallgemeinerte Datenbehälter Typ, der eine variable

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Überblick Weitere Sortierverfahren Merge Sort Heap Sort Praktische Auswirkungen der Laufzeitabschätzungen

Mehr

1 Hashing und die Klasse String

1 Hashing und die Klasse String 1 Hashing und die Klasse String Die Klasse String stellt Wörter von (Unicode-) Zeichen dar. Objekte dieser Klasse sind stets konstant, d.h. können nicht verändert werden (immutable). Die Zeichenkette ist

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

Lösungvorschlag zum Übungsblatt 13: Software-Entwicklung I (WS 2007/08)

Lösungvorschlag zum Übungsblatt 13: Software-Entwicklung I (WS 2007/08) Prof. Dr. A. Poetzsch-Heffter Dipl.-Inform. J. O. Blech Dipl.-Inform. M. J. Gawkowski Dipl.-Inform. N. Rauch TU Kaiserslautern Fachbereich Informatik AG Softwaretechnik Lösungvorschlag zum Übungsblatt

Mehr

Aufgaben NF 11; Seite 1

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

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Fallstudie: Arithmetische Ausdrücke Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick

Mehr

Informatik II Übung 02. Benjamin Hepp 8 March 2017

Informatik II Übung 02. Benjamin Hepp 8 March 2017 Informatik II Übung 02 Benjamin Hepp benjamin.hepp@inf.ethz.ch 8 March 2017 Nachbesprechung U1 08.03.2017 Informatik II - Übung 01 2 Nachbesprechung U1.1 f(a,b) = a x b = a) Induktionsbeweis ueber a nicht

Mehr

Abstrakte Datentypen und deren Implementierung in Python

Abstrakte Datentypen und deren Implementierung in Python Kapitel 15: Abstrakte Datentypen und deren Implementierung in Python Einführung in die Informatik Wintersemester 007/08 Prof. Bernhard Jung Übersicht Abstrakte Datentypen ADT Stack Python-Implementierung(en)

Mehr

Prüfung Algorithmen und Datenstrukturen I

Prüfung Algorithmen und Datenstrukturen I Hochschule für angewandte Wissenschaften München Fakultät für Informatik und Mathematik Studiengruppe IF 3 B Wintersemester 2016/17 Prüfung Algorithmen und Datenstrukturen I Datum : 23.01.2017, 08:30 Uhr

Mehr

Tutoraufgabe 1 (Implementierung eines ADTs):

Tutoraufgabe 1 (Implementierung eines ADTs): Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Tutoriumslösung - Übung (Abgabe.05.0) F. Corzilius, S. Schupp, T. Ströder Tutoraufgabe (Implementierung eines ADTs): Wir spezifizieren den ADT

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Übungsblatt 5 Objektorientierte Programmierung 22. 05. 2006 Aufgabe 9 (SMS-Eingabe am Handy mit Tries)

Mehr

Informatik II Prüfungsvorbereitungskurs

Informatik II Prüfungsvorbereitungskurs Informatik II Prüfungsvorbereitungskurs Tag 4, 9.6.2017 Giuseppe Accaputo g@accaputo.ch 1 Aufbau des PVK Tag 1: Java Teil 1 Tag 2: Java Teil 2 Tag 3: Algorithmen & Komplexität Tag 4: Dynamische Datenstrukturen,

Mehr

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen 1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen II.2.3 Datenabstraktion - 1 - Selektoren public class Rechteck

Mehr

Java-Schulung Grundlagen

Java-Schulung Grundlagen Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings

Mehr

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2011 Einführung in die rmatik I Übungsblatt 8 Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz, Dr.

Mehr

Klausur: Java (Liste P)

Klausur: Java (Liste P) Klausur: Java (Liste P) SS05 Erlaubte Hilfsmittel: Gebundene! Unterlagen (Skript mit Anmerkungen, eigene Mitschrift) und maximal ein Buch. Bitte keine losen Blätter. Lösung ist auf den Klausurbögen anzufertigen.

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

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

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen Teil 5 - Java Programmstruktur Operatoren Schlüsselwörter Datentypen 1 Kommentare in Java In Java gibt es drei Möglichkeiten zur Kommentierung: // Kommentar Alle Zeichen nach dem // werden ignoriert. für

Mehr