Algorithmen und Programmierung III
|
|
- Linus Beltz
- vor 5 Jahren
- Abrufe
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
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
MehrAlgorithmen 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
MehrALP 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
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
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
MehrLö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)
MehrGroß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,
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 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,
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
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
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
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
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
Mehr6. 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
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
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
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
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;
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
MehrInformatik 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 Sommersemester 2017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. (Sortierte) Listen 2. Stacks & Queues 3. Datenstrukturen 4. Rekursion und vollständige Induktion
Mehr12.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
MehrInformatik 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:
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 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
MehrKonkatenation 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,
MehrKapitel 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
MehrEinfü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
Mehr4.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
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)
MehrÜ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
MehrKapitel 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
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
MehrInterface. 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.
MehrEinfach 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
MehrSoftware 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
MehrEinstieg 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
MehrBeispielprü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
MehrAbgabe: (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,
MehrInformatik 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:
MehrEinstieg 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
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
MehrSS10 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
Mehr1 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
MehrAufgabenblatt 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
Mehr1 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
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
Mehr1 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
MehrDie 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
MehrFAKULTÄ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,
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
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.4 Exceptions - 1 - Ausnahmen (Exceptions( Exceptions) Treten auf, wenn zur
MehrObjektorientierung 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
MehrInformatik 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
MehrInformatik 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
MehrKapitel 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
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.
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
MehrFallstudie: 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);...
MehrVerkettete 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
MehrII.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 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:
MehrLö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)
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
MehrGrundlagen 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
MehrWie 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
Mehr2.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
MehrSoftware 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
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
MehrStack 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
MehrStapel (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).
MehrProgrammieren 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
MehrSoftware 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
Mehr1 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
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
MehrLö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
MehrAufgaben 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
MehrSoftware 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
MehrInformatik 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
MehrAbstrakte 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)
MehrPrü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
MehrTutoraufgabe 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
MehrObjektorientierte 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)
MehrInformatik 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,
Mehr1. 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
MehrJava-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
MehrTECHNISCHE 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.
MehrKlausur: 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.
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
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).
MehrTeil 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