Grundlagen der Informatik / Algorithmen und Datenstrukturen. Aufgabe 132

Größe: px
Ab Seite anzeigen:

Download "Grundlagen der Informatik / Algorithmen und Datenstrukturen. Aufgabe 132"

Transkript

1

2 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 der Vorlesung vorgestellt wurden. Insbesondere enthalte die Klasse ListNodeSL zur Speicherung eines Elementdatums das int-attribut key. Die zu erstellenden Methoden sollen zu der Klasse LinkedList gehören. Es dürfen nur Hilfsmethoden aus der Klasse ListNodeSL verwendet werden.

3 zu a a) Entwerfen Sie schriftlich eine rein iterative Funktion getminiter als Java-Methode, die den minimalen Datenwert in einer einfach verketteten Liste bestimmt. Beachten Sie, dass die Liste auch leer sein kann! In diesem Fall soll eine ListEmptyException erzeugt werden, wobei Sie die entsprechende Exception-Klasse als gegeben voraussetzen können. Vervollständigen Sie die folgende Methodendeklaration: public int getminiter () throws ListEmptyException // v a r i a b l e d e c l a r a t i o n s and program code...

4 zu a Idee: 1 Überprüfe, ob die Liste leer ist. Wenn ja ListEmptyException! 2 Merke Dir den Wert des ersten Knotens in einer Hilfsvariable. 3 Durchlaufe die Liste von Knoten zu Knoten bis zum Ende und überprüfe jeweils, ob der aktuelle Wert kleiner als der gemerkte Wert ist. Wenn ja, merke Dir diesen Wert. 4 Gib den gemerkten Wert zurück.

5 zu a Programmcode: public int getminiter () throws ListEmptyException int minhelp ; // H i l f s v a r i a b l e ListNodeSL current ; // der a k t u e l l e Knoten if( anchor == null ) // Überprüfen, ob L i s t e l e e r i s t throw new ListEmptyException (" Liste ist Leer!"); current = anchor ; // Anfangsannahme : e r s t e s minhelp = current. getkey (); // Element i s t Minimum while (( current=current. getnext ())!= null ) // s o l a n g e es e i n n ä c h s t e s // Element g i b t if( minhelp > current. getkey ()) // k l e i n s t e s Element i n minhelp = current. getkey (); // minhelp s c h r e i b e n return minhelp ; // H i l f s v a r i a b l e zurückgeb.

6 zu b b) Entwerfen Sie schriftlich eine rein rekursive Hilfsfunktion getminrechelp als Java-Methode, die den minimalen Datenwert in einer einfach verketteten Liste bestimmt. Diese private Hilfsfunktion wird von der öffentlichen Funktion getminrec aufgerufen; implementieren Sie auch diese entsprechend. Beachten Sie, dass die Liste auch leer sein kann! In diesem Fall soll eine ListEmptyException erzeugt werden, wobei Sie die entsprechende Exception-Klasse als gegeben voraussetzen können. Vervollständigen Sie die folgende Methodendeklarationen: public int getminrec () throws ListEmptyException // s t a r t e t d i e r e k u r s i v e H i l f s m e t h o d e an private int getminrechelp ( ListNodeSL listnode ) // Variablen Deklarationen und Programmcode... // r e i n r e k u r s i v e Methode

7 zu b Idee: 1 Hilfsmethode: Überprüfe, ob die Liste leer ist. Wenn ja ListEmptyException! Wenn nicht ruf die Hilfsmethode auf und starte beim Anker-Knoten. 2 Rekursionsaufruf: Jeder Knoten merkt sich in einer Hilfsvariable den kleinsten Wert der Restliste. 3 Überprüfung: Jeder Knoten vergleicht seinen Wert mit dem kleinsten Wert der Restliste und gibt den kleineren von beiden zurück. 4 Rekursionsabbruch (zu Beginn): Der letzte Knoten gibt einfach nur seinen Wert zurück.

8 zu b Programmcode: // Hauptmethode public int getminrec () throws ListEmptyException if( anchor == null ) // Überprüfen, ob L i s t e l e e r i s t throw new ListEmptyException (" Liste ist Leer!"); return getminrechelp ( anchor ); // A u f r u f der H i l f s f u n k t i o n // H i l f s m e t h o d e private int getminrechelp ( ListNodeSL current ) int minhelp ; // H i l f s v a r i a b l e if( current. getnext () == null ) // wenn d i e s das l e t z t e // Element i s t return current. getkey (); // g i b a k t u e l l e n Wert zurück minhelp = getminrechelp ( current. getnext ()); // Minimum der R e s t l i s t e if( minhelp < current. getkey ()) // wenn i n minhelp der // k l e i n e r e Wert s t e h t return minhelp ; // g i b minhelp zurück else // s o n s t return current. getkey (); // g i b a k t u e l l e n Wert zurück

9 zu c c) Entwerfen Sie schriftlich eine rein rekursive Hilfsfunktion printreversedrechelp als Java-Methode, die den Inhalt einer einfach verketteten Liste rückwärts (d. h. vom letzten zum ersten Element) auf die Standardausgabe ausgibt, also den Elementwert des Ankers zuletzt. Diese private Hilfsfunktion wird von der öffentlichen Funktion printreversedrec aufgerufen; implementieren Sie auch diese entsprechend. Beachten Sie, dass die Liste auch leer sein kann! In diesem Fall soll nichts ausgegeben werden. Vervollständigen Sie die folgende Methodendeklarationen: public void printreversedrec () // s t a r t e t d i e r e k u r s i v e H i l f s m e t h o d e an private void printreversedrechelp ( ListNodeSL listnode ) // Variablen Deklarationen und Programmcode... // r e i n r e k u r s i v e Methode

10 zu c Idee: Jedes Element, falls vorhanden, lässt zuerst die restliche Liste in umgekehrter Reihenfolge ausgeben (Rekursionsaufruf), dann erst gibt es seinen Wert aus.

11 zu c Programmcode: // Hauptmethode public void printreversedrec () printreversedrechelp ( anchor ); System.out. println (); // H i l f s m e t h o d e private void printreversedrechelp ( ListNodeSL current ) // wenn es keinen Wert gibt, tue n i c h t s und breche ab if( current == null ) return ; // R e s t l i s t e r ü c k w ä r t s ausgeben printreversedrechelp ( current. getnext ()); // zum Schluß : a k t u e l l e n Wert ausgeben System.out. print ( current. getkey () + " ");

12 zu d d) Entwerfen Sie schriftlich eine rein iterative Java-Methode reverseiter, welche die Reihenfolge der Elemente in einer einfach verketteten Liste umkehrt. Beachten Sie, dass dabei tatsächlich die Referenzen zwischen den Listenknoten geändert werden sollen, einfaches Umsortieren der Elementinhalte ist nicht erlaubt! Die Methodendeklaration lautet wie folgt: public void reverseiter () // Variablen Deklarationen und Programmcode...

13 zu d Idee (Variante 1): Man verwendet beim Durchlaufen der Liste drei Variablen um die Referenzen auf das aktuelle Element sowie Vorgänger und Nachfolger zwischenzuspeichern.

14 zu d Programmcode (Variante 1): public void reverseiter () ListNodeSL previous, current, next; if( anchor == null ) return ; current = anchor ; next = current. getnext (); // könnte N u l l s e i n current. setnext ( null ); // t a i l o f the r e v e r s e d l i s t while (next!= null ) previous = current ; current = next ; next = current. getnext (); current. setnext ( previous ); anchor = current ;

15 zu d Beispiel (Variante 1): Ausgangssituation

16 zu d Beispiel (Variante 1): current = anchor ; next = current. getnext (); current. setnext ( null );

17 zu d Beispiel (Variante 1): Nach erstem Schleifendurchlauf while (next!= null ) previous = current ; current = next ; next = current. getnext (); current. setnext ( previous );

18 zu d Beispiel (Variante 1): Nach zweitem Schleifendurchlauf while (next!= null ) previous = current ; current = next ; next = current. getnext (); current. setnext ( previous );

19 zu d Beispiel (Variante 1): Abbruch der Schleife (da next == null), danach anchor = current ;

20 zu d Idee (Variante 2): 1 Erzeuge eine (leere) Hilfsliste 2 Nimm den key-wert des ersten Knotens der Originalliste 3 Füge mit diesem Wert einen neuen Knoten am Anfang der Hilfsliste hinzu 4 Lösche den ersten Knoten der Originalliste 5 Wiederhole Schritt 2-4 bis die Originalliste leer ist 6 Referenziere den ersten Knoten der Hilfsliste als Anker der Originalliste

21 zu d Programmcode (Variante 2): public void reverseiter2 () LinkedList listtemp = new LinkedList (); try while (! this. isempty ()) int x = this. getfirst (). getkey (); listtemp. insertfirst (x); this. delete4 (x); this. anchor = listtemp. getfirst (); catch ( Exception e)

22 zu e e) Entwerfen Sie schriftlich eine rein rekursive Hilfsfunktion reverserechelp als Java-Methode, welche die Reihenfolge der Elemente in einer einfach verketteten Liste umkehrt. Beachten Sie, dass dabei tatsächlich die Referenzen zwischen den Listenknoten geändert werden sollen, einfaches Umsortieren der Elementinhalte ist nicht erlaubt! Diese private Hilfsfunktion wird von der öffentlichen Funktion reverserec aufgerufen; implementieren Sie auch diese entsprechend. Vervollständigen Sie die folgende Methodendeklarationen: public void reverserec () // s t a r t e t d i e r e k u r s i v e H i l f s m e t h o d e an private void reverserechelp ( ListNodeSL listnode ) // Variablen Deklarationen und Programmcode... // r e i n r e k u r s i v e Methode

23 zu e Idee: Jeder aufgerufene Knoten bekommt zusätzlich seinen Vorgänger mitgeteilt macht aus seinem Vorgänger-Knoten seinen Nachfolger gibt die umgekehrte Restliste zurück

24 zu e Programmcode: // Hauptmethode public void reverserec () anchor = reverserechelp (anchor, null ); // H i l f s m e t h o d e private ListNodeSL reverserechelp ( ListNodeSL current, ListNodeSL previous ) if( current == null ) return previous ; ListNodeSL next = current. getnext (); current. setnext ( previous ); return reverserechelp (next, current );

25 zu f f) Bestimmen Sie die mittlere Zeitkomplexität für die im Skript implementierten Methoden insertfirst, insertlast und insert zum Einfügen eines Elements in eine einfach verkettete Liste. Verwenden Sie als Maß für den Aufwand die Anzahl der während der Operation referenzierten ( besuchten ) Knoten der ursprünglichen Liste der Länge n.

26 zu f Lösung: insertfirst: c avg = 1 O(1) insertlast: c avg = n O(n) insert: c avg = 1 n n i = n i=1 O(n)

27 zu g g) Entwerfen Sie schriftlich eine rein rekursive Hilfsfunktion searchkeyrechelp als Java-Methode, welche überprüft ob ein gegebener Suchschlüssel skey in der Liste vorkommt oder nicht. Die Funktion soll möglichst effizient arbeiten. Diese private Hilfsfunktion wird von der öffentlichen Funktion searchkeyrec aufgerufen; implementieren Sie auch diese entsprechend. Vervollständigen Sie die folgende Methodendeklarationen: public boolean searchkeyrec ( int skey ) // s t a r t e t d i e r e k u r s i v e H i l f s m e t h o d e an private boolean searchkeyrechelp ( ListNodeSL listnode, int skey ) // Variablen Deklarationen und Programmcode... // r e i n r e k u r s i v e Methode

28 zu g Idee: 1 Wenn aktueller key-wert = gesuchter key-wert return true 2 Wenn es keinen nächsten Listenknoten gibt return false 3 Gib zurück, ob sich das gesuchte Element in der Restliste befindet

29 zu g Programmcode: // Hauptmethode public boolean searchkeyrec ( int skey) if( anchor == null ) // Überprüfen, ob L i s t e l e e r i s t return false ; return searchkeyrechelp (anchor, skey ); // A u f r u f der H i l f s f u n k t i o n // H i l f s m e t h o d e private boolean searchkeyrechelp ( ListNodeSL current, int skey) if( current. getkey () == skey) return true ; if( current. getnext () == null ) return false ; return searchkeyrechelp ( current. getnext (), skey );

30 zu h h) Entwerfen Sie schriftlich eine rein rekursive Hilfsfunktion countkeyrechelp als Java-Methode, welche zählt wie oft ein gegebener Suchschlüssel skey in der Liste vorkommt. Diese private Hilfsfunktion wird von der öffentlichen Funktion countkeyrec aufgerufen; implementieren Sie auch diese entsprechend. Vervollständigen Sie die folgende Methodendeklarationen: public int countkeyrec ( int skey ) // s t a r t e t d i e r e k u r s i v e H i l f s m e t h o d e an private int countkeyrechelp ( ListNodeSL listnode, int skey ) // Variablen Deklarationen und Programmcode... // r e i n r e k u r s i v e Methode

31 zu h Idee: Jeder vorhandene Knoten: Wenn gesuchter Wert == Wert des Knotens: return (1 + Anzahl des gesuchten Wertes in der Restliste) Wenn gesuchter Wert!= Wert des Knotens: return (Anzahl des gesuchten Wertes in der Restliste) Am Schluss der Liste (wenn current == null): return 0

32 zu h Programmcode: // Hauptmethode public int countkeyrec ( int skey ) return countkeyrechelp (anchor, skey ); // H i l f s m e t h o d e private int countkeyrechelp ( ListNodeSL current, int skey) if( current == null ) return 0; if( current. getkey () == skey) return 1 + countkeyrechelp ( current. getnext (), skey ); else return countkeyrechelp ( current. getnext (), skey );

33 zu i i) Entwerfen Sie schriftlich eine rein rekursive Hilfsfunktion countelementsrechelp als Java-Methode, welche die Länge der Liste, also die Anzahl ihrer Elemente, bestimmt. Diese private Hilfsfunktion wird von der öffentlichen Funktion countelementsrec aufgerufen; implementieren Sie auch diese entsprechend. Vervollständigen Sie die folgende Methodendeklarationen: public int countelementsrec () // s t a r t e t d i e r e k u r s i v e H i l f s m e t h o d e an private int countelementsrechelp ( ListNodeSL listnode ) // Variablen Deklarationen und Programmcode... // r e i n r e k u r s i v e Methode

34 zu i Idee: Jeder vorhandene Knoten: return (1 + Länge der Restliste) Am Schluss der Liste (wenn current == null): return 0

35 zu i Programmcode: // Hauptmethode public int countelementsrec () return countelementsrechelp ( anchor ); // H i l f s m e t h o d e private int countelementsrechelp ( ListNodeSL current ) if( current == null ) return 0; return (1 + countelementsrechelp ( current. getnext ()));

36 zu j j) Entwerfen Sie schriftlich eine rein rekursive Hilfsfunktion checksortorderrechelp als Java-Methode, welche überprüft, ob die Liste bezüglich ihrer Schlüssel aufsteigend sortiert ist. Die Funktion soll möglichst effizient arbeiten. Diese private Hilfsfunktion wird von der öffentlichen Funktion checksortorderrec aufgerufen; implementieren Sie auch diese entsprechend. Vervollständigen Sie die folgende Methodendeklarationen: public boolean checksortorderrec () // s t a r t e t d i e r e k u r s i v e H i l f s m e t h o d e an private boolean checksortorderrechelp ( ListNodeSL listnode ) // Variablen Deklarationen und Programmcode... // r e i n r e k u r s i v e Methode

37 zu j Idee: 1 Wenn es keinen nächsten Listenknoten gibt, dann war die bisherige Liste sortiert return true 2 Wenn der aktuelle Wert größer als der Nachfolgerwert ist return false 3 Gib zurück, ob die Restliste sortiert ist

38 zu j Programmcode: // Hauptmethode public boolean checksortorderrec () if( anchor == null ) return true ; return checksortorderrechelp ( anchor ); // H i l f s m e t h o d e private boolean checksortorderrechelp ( ListNodeSL current ) if( current. getnext () == null ) return true ; if( current. getkey () > current. getnext (). getkey ()) return false ; return checksortorderrechelp ( current. getnext ());

39 Aufgabe 133

40 Aufgabe 133 Aufgabenstellung In dieser Aufgabe wollen wir unser Verständnis der einfach verketteten Listen durch Implementierung derselben vertiefen. In der Vorlesung haben Sie neben den Klassen ListNodeSL (zur Realisierung eines Listenknotens) und LinkedList (zur Verwaltung der gesamten Liste) insbesondere auch viele mögliche Methoden der Klasse LinkedList (wie z. B. show1) bereits theoretisch und an Beispielen kennengelernt. a) Implementieren Sie die Klasse ListNodeSL im Paket mypack.list. b) Implementieren Sie die Klasse LinkedList im Paket mypack.list. c) Implementieren Sie für die Klasse LinkedList alle notwendigen Methoden, um alle vorgesehenen Funktionalitäten der Java-Anwendung ListTest im Paket mypack ausführen zu können. Erweitern Sie dazu auch ListTest entsprechend. Testen Sie Ihre Anwendung ausgiebig! Beachten Sie die Vorgaben Uebung133.zip zur Aufgabenstellung.

41 Aufgabe 133 todo-liste todo-liste die Klasse ListNodeSL anhand der Vorlesungsunterlagen implementieren siehe Folien K 24 und K 25 die Klasse ListEmptyException analog zu den Klassen StackOverflowException, StackUnderflowException,... implementieren

42 Aufgabe 133 todo-liste todo-liste die Klasse LinkedList anhand der Vorlesungsunterlagen implementieren siehe Folien K 27 und K 34ff das Grundgerüst und die Methoden (getlast(), isempty(),...) von Folie K 27 abschreiben bzw. fertig implementieren (anstelle der Methode delete(int key) verwenden wir die in der Vorlesung vorgestellten Methoden delete4(int key) und delete5(int key)). show1() implementieren Folie K 34 show2() implementieren Folie K 36 dispose1() implementieren Folie K 37 dispose2() implementieren Folie K 38 insertfirst(int key) implementieren Folie K 39 insertlast(int key) implementieren Folie K 39 insert(int key) implementieren Folie K 40 delete4(int key) implementieren Folie K 48 delete5(int key) implementieren Folie K 49 getminiter() implementieren siehe a getminrec() implementieren siehe b printreversedrec() implementieren siehe c reverserec() implementieren siehe e searchkeyrec(int skey) implementieren siehe g countkeyrec(int skey) implementieren siehe h countelementsrec() implementieren siehe i checksortorderrec() implementieren siehe j

43 Aufgabe 133 todo-liste todo-liste die Klasse ListTest ist die Anwendungsklasse und soll folgende Funktionalitäten haben: - Liste löschen bereits implementiert (list.dispose1();) - Liste ausgeben (iterativ) bereits implementiert (list.show1();) - Liste ausgeben (rekursiv) todo! - Liste umgekehrt ausgeben (rekursiv) todo! - Liste umkehren (rekursiv) todo! - Element hinzufügen (am Anfang) todo! - Element hinzufügen (am Ende) bereits implementiert - Element hinzufügen (Sortierreihenfolge) todo! - Element löschen (iterativ) todo! - Element löschen (rekursiv) todo! - Element suchen (iterativ) todo! - Element suchen (rekursiv) todo! - Element zählen (iterativ) todo! - Element zählen (rekursiv) todo! - Listenlänge bestimmen (iterativ) todo! - Listenlänge bestimmen (rekursiv) todo! - Aufsteigende Sortierung überprüfen (iterativ) todo! - Aufsteigende Sortierung überprüfen (rekursiv) todo! - Liste vorbelegen (unsortiert) bereits implementiert - Liste vorbelegen (sortiert) todo!

44 Aufgabe 133 zu Aufgabe 133a Die Klasse ListNodeSL package mypack.list ; public class ListNodeSL private int key; // key Wert private ListNodeSL next; // Verweis auf den nächsten Knoten // Konstruktoren public ListNodeSL ( int key, ListNodeSL next) this.key = key; this.next = next; public ListNodeSL () this (0, null ); // get Methoden public int getkey () return key ; public ListNodeSL getnext () return next ; // set Methoden public void setkey (int key ) this.key = key ; public void setnext ( ListNodeSL next ) this.next = next ;

45 Aufgabe 133 zu Aufgabe 133b Die Klasse LinkedList siehe todo-liste

46 Aufgabe 133 zu Aufgabe 133c Liste ausgeben (rekursiv): Analog zum Aufruf der iterativen Methode show1() case 3: list. show2 (); System.out. println (); break ;

47 Aufgabe 133 zu Aufgabe 133c Liste umgekehrt ausgeben (rekursiv): Verwendung der Methode printreversedrec() aus c. case 4: list. printreversedrec (); break ;

48 Aufgabe 133 zu Aufgabe 133c Liste umkehren (rekursiv): Verwendung der Methode reverserec() aus e. case 5: list. reverserec (); break ;

49 Aufgabe 133 zu Aufgabe 133c Element hinzufügen (am Anfang): Analog zum Aufruf der Methode zum Einfügen eines Elements am Ende der Liste (Menüpunkt 7) Verwendung der Methode list.insertfirst(element) von Folie K 39. case 6: int element ; // element e i n l e s e n list. insertfirst ( element ); break ;

50 Aufgabe 133 zu Aufgabe 133c Element hinzufügen (Sortierreihenfolge): Analog zum Aufruf der Methode zum Einfügen eines Elements am Ende der Liste (Menüpunkt 7) Verwendung der Methode list.insert(element) von Folie K 40. case 8: // element e i n l e s e n list. insert ( element ); break ;

51 Aufgabe 133 zu Aufgabe 133c Element löschen (iterativ): Verwendung der iterativen Methode delete4(element) von Folie K 48. case 9: // element e i n l e s e n list. delete4 ( element ); break ;

52 Aufgabe 133 zu Aufgabe 133c Element löschen (rekursiv): Verwendung der rekursiven Methode delete5(element) von Folie K 49. case 10: // element e i n l e s e n list. delete5 ( element ); break ;

53 Aufgabe 133 zu Aufgabe 133c Element suchen (iterativ): Es wird eine iterative Methode benötigt, die zurückgibt, ob ein Element in einer Liste vorhanden ist. Idee: 1 Beginne beim Anker 2 Wenn aktueller key-wert = gesuchter key-wert return true 3 Wenn nicht, gehe zum nächsten Listenknoten und überprüfe wieder (solange bis das Ende der Liste erreicht ist) 4 Wenn am Ende der Liste der gesuchte Wert noch nicht gefunden wurde return false

54 Aufgabe 133 zu Aufgabe 133c Element suchen (iterativ): Programmcode: public boolean searchkeyiter ( int skey) ListNodeSL current = anchor ; if( anchor == null ) // Überprüfen, ob L i s t e l e e r i s t return false ; do if ( current. getkey () == skey) return true ; while (( current = current. getnext ())!= null ); return false ; Aufruf in ListTest: case 11: // element e i n l e s e n System.out. println (list. searchkeyiter ( element )); break ;

55 Aufgabe 133 zu Aufgabe 133c Element suchen (rekursiv): Verwendung der Methode searchkeyrec(int skey) aus g. case 12: // element e i n l e s e n System.out. println (list. searchkeyrec ( element )); break ;

56 Aufgabe 133 zu Aufgabe 133c Element zählen (iterativ): Programmcode: public int countkeyiter ( int skey) int count = 0; ListNodeSL current = anchor ; while ( current!= null ) if( current. getkey () == skey ) count ++; current = current. getnext (); return count ; Aufruf in ListTest: case 13: // element e i n l e s e n System.out. println ("Das Element ist " + list. countkeyiter ( element ) + " mal vorhanden "); break ;

57 Aufgabe 133 zu Aufgabe 133c Element zählen (rekursiv): Verwendung der Methode countkeyrec(int skey) aus h. case 14: // element e i n l e s e n System.out. println ("Das Element ist " + list. countkeyrec ( element ) + " mal vorhanden "); break ;

58 Aufgabe 133 zu Aufgabe 133c Listenlänge bestimmen (iterativ): Programmcode: public int countelementsiter () int count = 0; ListNodeSL current = anchor ; while ( current!= null ) count ++; current = current. getnext (); return count ; Aufruf in ListTest: case 15: System.out. println (" Länge der Liste: " + list. countelementsiter ()); break ;

59 Aufgabe 133 zu Aufgabe 133c Listenlänge bestimmen (rekursiv): Verwendung der Methode countelementsrec() aus i. case 16: System.out. println (" Länge der Liste: " + list. countelementsrec ()); break ;

60 Aufgabe 133 zu Aufgabe 133c Aufsteigende Sortierung überprüfen (iterativ): Iterative Methode zum Überprüfen der aufsteigenden Sortierung Idee: 1 Gehe die Liste in einer Schleife durch und überprüfe, ob aktuelle Wert größer als der Nachfolgerwert ist. Wenn ja return false 2 Ist das Ende der Liste erreicht und es wurde noch nicht abgebrochen, dann ist ist Liste sortiert return true

61 Aufgabe 133 zu Aufgabe 133c Aufsteigende Sortierung überprüfen (iterativ): Programmcode: public boolean checksortorderiter () ListNodeSL current = anchor ; while ( current!= null ) if (( current. getnext ()!= null ) && ( current. getkey () > current. getnext (). getkey ())) return false ; current = current. getnext (); return true ; Aufruf in ListTest: case 17: System.out. println (list. checksortorderiter ()); break ;

62 Aufgabe 133 zu Aufgabe 133c Aufsteigende Sortierung überprüfen (rekursiv) Verwendung der Methode checksortorderrec() aus j. case 18: System.out. println (list. checksortorderrec ()); break ;

63 Aufgabe 133 zu Aufgabe 133c Liste vorbelegen (sortiert): Nahezu identisch zur unsortierten Vorbelegung - in der for-schleife wird jedoch die Methode insert(int key) zum sortierten Einfügen in die Liste verwendet. case 43: //... for(int i=1; i <= elements ; i++) list. insert ( randomgen. nextint (max +1)); break ;

Grundlagen der Informatik / Algorithmen und Datenstrukturen. Aufgabe 139

Grundlagen der Informatik / Algorithmen und Datenstrukturen. Aufgabe 139 Aufgabe 139 Aufgabe 139 Aufgabenstellung Stellen Sie den folgenden in Feldbaum-Darstellung beschriebenen Binärbaum a) graphisch (welcher Knoten ist die Wurzel?), b) in halbsequentieller Darstellung, c)

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

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

Anwendungsbeispiel MinHeap

Anwendungsbeispiel MinHeap Anwendungsbeispiel MinHeap Uns seien n ganze Zahlen gegeben und wir möchten darin die k größten Zahlen bestimmen; zudem gelten, dass n deutlich größer als k ist Wir können das Problem mit Laufzeit in O(n

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

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

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

Bäume. Prof. Dr. Christian Böhm. in Zusammenarbeit mit Gefei Zhang.   WS 07/08 Bäume Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang http://www.dbs.ifi.lmu.de/lehre/nfinfosw WS 07/08 2 Ziele Standardimplementierungen für Bäume kennen lernen 3 Bäume (abstrakt) Bäume sind

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

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

! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 -

! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 - ! 1. Rekursive Algorithmen! 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Ausdruck Ausdruck Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ Ausdruck ] ( Ausdruck

Mehr

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

Grundlagen der Informatik / Algorithmen und Datenstrukturen. Aufgabe 143

Grundlagen der Informatik / Algorithmen und Datenstrukturen. Aufgabe 143 Aufgabe 143 Aufgabe 143 Aufgabenstellung Gegeben ist der folgende AVL-Baum: a) Fügen Sie in diesen AVL-Baum nacheinander Knoten mit den Inhalten 34, 42, 1701 und 30 ein. Führen Sie die ggf. notwendigen

Mehr

1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen

1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen 1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ ] ( ) Infix-Operator Methodenaufruf new

Mehr

Bäume. Martin Wirsing. Ziele. Implementierung von Knoten. Bäume (abstrakt) Standardimplementierungen für Bäume kennen lernen

Bäume. Martin Wirsing. Ziele. Implementierung von Knoten. Bäume (abstrakt) Standardimplementierungen für Bäume kennen lernen 2 Ziele Bäume Standardimplementierungen für Bäume kennen lernen Martin Wirsing in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang 02/0 4 Bäume (abstrakt) Implementierung von Knoten Bäume

Mehr

Geordnete Binärbäume

Geordnete Binärbäume Geordnete Binärbäume Prof. Dr. Martin Wirsing in Zusammenarbeit mit Gilbert Beyer und Christian Kroiß http://www.pst.ifi.lmu.de/lehre/wise-09-10/infoeinf/ WS 09/10 Einführung in die Informatik: Programmierung

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

Städtisches Gymnasium Olpe Java Ht Informatik - Q1 Die Klasse List im Abitur Methoden und Beispielcode Hier alle wichtigen Methoden. Ein Beispielcode

Städtisches Gymnasium Olpe Java Ht Informatik - Q1 Die Klasse List im Abitur Methoden und Beispielcode Hier alle wichtigen Methoden. Ein Beispielcode Die Klasse List im Abitur Methoden und Beispielcode Hier alle wichtigen Methoden. Ein Beispielcode folgt im Anschluss. Beispielcode Es gibt eine Klasse Benutzerverwaltung, welche eine Liste mit Benutzern

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

3. Übungsblatt zu Algorithmen I im SoSe 2017

3. Übungsblatt zu Algorithmen I im SoSe 2017 Karlsruher Institut für Technologie Prof. Dr. Jörn Müller-Quade Institut für Theoretische Informatik Björn Kaidel, Sebastian Schlag, Sascha Witt 3. Übungsblatt zu Algorithmen I im SoSe 2017 http://crypto.iti.kit.edu/index.php?id=799

Mehr

B6.1 Introduction. Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B6.1 Introduction. B6.3 Analyse. B6.4 Ordnungsbasierte Methoden

B6.1 Introduction. Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B6.1 Introduction. B6.3 Analyse. B6.4 Ordnungsbasierte Methoden Algorithmen und Datenstrukturen 11. April 2018 B6. Binäre Suchbäume a Algorithmen und Datenstrukturen B6. Binäre Suchbäume 1 Marcel Lüthi and Gabriele Röger Universität Basel 11. April 2018 a Folien basieren

Mehr

Grundlagen der Informatik

Grundlagen der Informatik Grundlagen der Informatik Klausur 1. August 2008 1. Dynamische Datenstrukturen und objektorientierte Programmierung (45 Punkte) Gegeben sei eine Datenstruktur mit folgendem Aufbau struct lelem { int w;

Mehr

Einführung Elementare Datenstrukturen. Der Konstruktor muß den Listenkopf head erzeugen. Der Vorgänger und Nachfolger von head ist head selbst.

Einführung Elementare Datenstrukturen. Der Konstruktor muß den Listenkopf head erzeugen. Der Vorgänger und Nachfolger von head ist head selbst. Einführung Elementare Datenstrukturen (Folie 28, Seite 15 im Skript) Der Konstruktor muß den Listenkopf head erzeugen. Der Vorgänger und Nachfolger von head ist head selbst. Einführung Elementare Datenstrukturen

Mehr

// Objekt-Methoden: public void insert(int x) { next = new List(x,next); } public void delete() { if (next!= null) next = next.next; } public String

// Objekt-Methoden: public void insert(int x) { next = new List(x,next); } public void delete() { if (next!= null) next = next.next; } public String // Objekt-Methoden: public void insert(int x) { next = new List(x,next); } public void delete() { if (next!= null) next = next.next; } public String tostring() { String result = "["+info; for(list t=next;

Mehr

Algorithmen und Programmierung III

Algorithmen und Programmierung III 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

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

Java. public D find(k k) { Listnode K, D n = findnode(k); if(n == null) return null; return n.data; Java

Java. public D find(k k) { Listnode K, D n = findnode(k); if(n == null) return null; return n.data; Java Einführung Elementare Datenstrukturen (Folie 27, Seite 15 im Skript) Java Java public D find(k k) { Listnode K, D n = findnode(k); if(n == null) return null; return n.data; } protected Listnode K, D findnode(k

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

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

Übung Algorithmen und Datenstrukturen

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

Mehr

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

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 Elementare Datenstrukturen) Prof. Dr. Susanne Albers Lineare Listen (1) Lineare Anordnung von Elementen eines Grundtyps (elementarer Datentyp

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

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

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe: Musterlösung Übung 7 Aufgabe 1 Sehen wir uns zu allererst das gegebene Forth Programm an: 0 3 new - list constant list1 list1 5 new - list constant list2 list1 6 new - list constant list3 list2 2 new -

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

Prüfung A Informatik D-MATH/D-PHYS :15 14:55

Prüfung A Informatik D-MATH/D-PHYS :15 14:55 Prüfung A Informatik D-MATH/D-PHYS 17. 12. 2013 13:15 14:55 Prof. Bernd Gartner Kandidat/in: Name:. Vorname:. Stud.-Nr.:. Ich bezeuge mit meiner Unterschrift, dass ich die Prufung unter regularen Bedingungen

Mehr

ALP II Dynamische Datenmengen

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

Mehr

Prof. Dr. Uwe Schmidt. 30. Januar 2017

Prof. Dr. Uwe Schmidt. 30. Januar 2017 Prof. Dr. Uwe Schmidt 30. Januar 2017 Aufgaben zur Klausur Algorithmen und Datenstrukturen im WS 2016/17 ( B Inf, B TInf, B MInf, B CGT, B WInf, B Ecom, B ITE) Zeit: 75 Minuten erlaubte Hilfsmittel: keine

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

12. Dynamische Datenstrukturen

12. Dynamische Datenstrukturen Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Implementationsvarianten der verketteten Liste 0 04 Motivation: Stapel ( push, pop, top, empty

Mehr

Übung zur Vorlesung Programmierung

Übung zur Vorlesung Programmierung RWTH Aachen Lehrgebiet Theoretische Informatik Frohn Reidl Rossmanith Sánchez Ströder WS 013/14 Übungsblatt 4 18.11.013 Übung zur Vorlesung Programmierung Aufgabe T8 Ein Stack ist eine Datenstruktur, die

Mehr

a) Für das vorgegebene Programmstück ergibt sich folgendes Referenzgeflecht:

a) Für das vorgegebene Programmstück ergibt sich folgendes Referenzgeflecht: Technische Universität München WS 2011/12 Fakultät für Informatik Übungsblatt 7 Dr. C. Herzog, M. Maalej 05. Dezember 2011 Übungen zu Grundlagen der Programmierung Aufgabe 32 (Lösungsvorschlag) Für die

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

Kapitel 5: Iterierbare Container

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

Mehr

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

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

Mehr

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

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

Mehr

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

Übung zur Vorlesung Programmierung

Übung zur Vorlesung Programmierung RWTH Aachen Lehrgebiet Theoretische Informatik Frohn Reidl Rossmanith Sánchez Ströder WS 2013/14 Übungsblatt 2 4.11.2013 Übung zur Vorlesung Programmierung Aufgabe T4 Wir wollen die Klasse Liste aus der

Mehr

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17 EINI LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de

Mehr

Grundlagen der Informatik

Grundlagen der Informatik Grundlagen der Informatik Musterklausur 1. Dynamische Datenstrukturen und objektorientierte Programmierung Zur Verwaltung einer digitalen Fotogalerie sollen Techniken der objektorientierten Programmierung

Mehr

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

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

Mehr

Tutoraufgabe 1 (Implementierung eines ADTs):

Tutoraufgabe 1 (Implementierung eines ADTs): Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Übungsblatt (Abgabe.05.0) F. Corzilius, S. Schupp, T. Ströder Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je bis Studierenden

Mehr

Klausur zur Vorlesung Einführung in die Programmierung

Klausur zur Vorlesung Einführung in die Programmierung Ludwig-Maximilians-Universität München Institut für Informatik Dr. Peer Kröger, Dr. Andreas Züfle Daniel Kaltenthaler, Klaus Schmid Klausur zur Vorlesung Einführung in die Programmierung Lösungen Vorname:

Mehr

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

Lösungsvorschläge. zu den Aufgaben im Kapitel 4 Lösungsvorschläge zu den Aufgaben im Kapitel 4 Aufgabe 4.1: Der KNP-Algorithmus kann verbessert werden, wenn in der Funktion nexttabelle die Zuweisung next[tabindex] = ruecksprung; auf die etwas differenziertere

Mehr

Lösungsvorschläge zur Nachklausur zum Kurs 1618 Sommersemester 2001 am

Lösungsvorschläge zur Nachklausur zum Kurs 1618 Sommersemester 2001 am Aufgabe 1 Lösungsvorschläge zur Nachklausur zum Kurs 1618 Sommersemester 2001 am 16.3.2002 Folgende Implementierung löst die gestellte Aufgabe : public interface Figur { public void anzeigen (); public

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Binärbaum Suchbaum Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 356 Datenstruktur Binärbaum Strukturrepräsentation des mathematischen Konzepts Binärbaum

Mehr

Algorithmen & Datenstrukturen Midterm Test 2

Algorithmen & Datenstrukturen Midterm Test 2 Algorithmen & Datenstrukturen Midterm Test 2 Martin Avanzini Thomas Bauereiß Herbert Jordan René Thiemann

Mehr

Übung 10: Dynamische Datenstrukturen und Rekursion

Übung 10: Dynamische Datenstrukturen und Rekursion Übung 10: Dynamische Datenstrukturen und Rekursion Abgabetermin: TT.MM.JJJJ Name: Matrikelnummer: Gruppe: G1 (Prähofer) G2 (Wolfinger) G3 (Wolfinger) Aufgabe Punkte gelöst abzugeben schriftlich abzugeben

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Sortierte Listen 2. Stacks & Queues 3. Teile und Herrsche Nächste Woche: Vorrechnen (first-come-first-served)

Mehr

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12 EINI LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Übung 3: Die generische Klasse BinärerSuchbaum in Java 1 Datenelemente der Klasse BinaererSuchbaum Das einzige Datenelelement in dieser Klasse ist die Wurzel vom Typ BinaerBaumknoten. Die Klasse BinaerBaumknoten

Mehr

Allgemeine Informatik II SS :30-11:30 Uhr

Allgemeine Informatik II SS :30-11:30 Uhr TU Darmstadt FB Informatik Prof. J. Fürnkranz Semestralklausur - Lösungsvorschlag Allgemeine Informatik II SS 2005 20.07.2005 09:30-11:30 Uhr Hinweise: Als Hilfsmittel ist nur ein schwarzer oder blauer

Mehr

9. Natürliche Suchbäume

9. Natürliche Suchbäume Bäume Bäume sind. Natürliche Suchbäume [Ottman/Widmayer, Kap..1, Cormen et al, Kap. 12.1-12.] Verallgemeinerte Listen: Knoten können mehrere Nachfolger haben Spezielle Graphen: Graphen bestehen aus Knoten

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

Institut für Programmierung und Reaktive Systeme 24. April Programmieren II. 10. Übungsblatt

Institut für Programmierung und Reaktive Systeme 24. April Programmieren II. 10. Übungsblatt Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 24. April 2018 Programmieren II 10. Übungsblatt Hinweis: Auf diesem und den folgenden Übungsblättern

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

Informatik Abitur Bayern 2017 / II - Lösung

Informatik Abitur Bayern 2017 / II - Lösung Informatik Abitur Bayern 2017 / II - Lösung Autoren: Wolf (1) Wagner (2) Scharnagl (3-5) 1a 5 1b Diese Methode vergleicht den Namen des Interpreten eines jeden Elements der Liste mit dem gegebenen Namen.

Mehr

Programmierung WS18/19 Lösung - Präsenzübung

Programmierung WS18/19 Lösung - Präsenzübung Prof. aa Dr. J. Giesl S. Dollase, M. Hark, D. Korzeniewski Aufgabe 1 (Programmanalyse): (9.5 + 4.5 = 14 Punkte) a) Geben Sie die Ausgabe des Programms für den Aufruf java M an. Tragen Sie hierzu jeweils

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

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

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

Mehr

Kapitel 12: Induktive

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

Mehr

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

Java Übung. Übung 3. Werner Gaulke. 2. Mai Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.

Java Übung. Übung 3. Werner Gaulke. 2. Mai Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung. Java Übung Übung 3 Universität Duisburg-Essen Kommedia, Übung EinPro SS06, 2. Mai 2006 (UniDUE) 2. Mai 2006 1 / 17 Aufgabe 1 Umwandeln von do while in for Schleife. Listing 1: aufgabe3 1.java 1 public

Mehr

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

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

Mehr

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

Programmieren in C. Rekursive Strukturen. Prof. Dr. Nikolaus Wulff Programmieren in C Rekursive Strukturen Prof. Dr. Nikolaus Wulff Rekursive Strukturen Häufig müssen effizient Mengen von Daten oder Objekten im Speicher verwaltet werden. Meist werden für diese Mengen

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 10 (3.6.2014) Binäre Suchbäume I Algorithmen und Komplexität Zusätzliche Dictionary Operationen Dictionary: Zusätzliche mögliche Operationen:

Mehr

Programmierung WS14/15 Lösung - Präsenzübung C. Aschermann, F. Frohn, J. Hensel, T. Ströder

Programmierung WS14/15 Lösung - Präsenzübung C. Aschermann, F. Frohn, J. Hensel, T. Ströder Prof. aa Dr. J. Giesl C. Aschermann, F. Frohn, J. Hensel, T. Ströder Aufgabe 1 (Programmanalyse): (14 + 6 = 20 Punkte) a) Geben Sie die Ausgabe des Programms für den Aufruf java M an. Tragen Sie hierzu

Mehr

Institut fu r Informatik

Institut fu r Informatik Technische Universita t Mu nchen Institut fu r Informatik Lehrstuhl fu r Bioinformatik Einfu hrung in die Programmierung fu r Bioinformatiker Prof. B. Rost, L. Richter WS 2015/16 Aufgabenblatt 6 23.11.2014

Mehr

int x = 3; int y = 11; public A () { this.x = z; y *= z;

int x = 3; int y = 11; public A () { this.x = z; y *= z; Prof. aa Dr. J. Giesl Programmierung WS16/17 F. Frohn, J. Hensel, D. Korzeniewski Aufgabe 1 (Programmanalyse): (13 + 6 = 19 Punkte) a) Geben Sie die Ausgabe des Programms für den Aufruf java M an. Tragen

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

Bäume. Martin Wirsing. Ziele. Baumknoten. Bäume - 2-dimensionale Listen. Standardimplementierungen für Bäume kennenlernen

Bäume. Martin Wirsing. Ziele. Baumknoten. Bäume - 2-dimensionale Listen. Standardimplementierungen für Bäume kennenlernen 2 Ziele Bäume Standardimplementierungen für Bäume kennenlernen Das Composite-Muster kennenlernen Martin Wirsing in Zusammenarbeit mit Matthias Hölzl, Piotr Kosiuczenko, Dirk Pattinson 06/03 3 4 Bäume -

Mehr

3.3. Rekursive Datentypen

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

Mehr

Programmieren in Java -Eingangstest-

Programmieren in Java -Eingangstest- Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit

Mehr

1. Aufgabe (6 Punkte): Java-Programmierung (Arrays)

1. Aufgabe (6 Punkte): Java-Programmierung (Arrays) Der folgende Mitschrieb wurde von Prof. Alexa am 16.07.2008 als Probeklausur in der MPGI2 Vorlesung gezeigt und wurde auf http://www.basicinside.de/2008/node/94 veröffentlicht. Die Abschrift ist unter

Mehr

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

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 Bäume: Grundlagen und natürliche Suchbäume) Prof. Dr. Susanne Albers Bäume (1) Bäume sind verallgemeinerte Listen (jedes Knoten-Element kann mehr

Mehr

Felder. Inhaltsverzeichnis. M. Jakob. 28. April Begriffsbildung. Verwendung von Feldern. Gymnasium Pegnitz

Felder. Inhaltsverzeichnis. M. Jakob. 28. April Begriffsbildung. Verwendung von Feldern. Gymnasium Pegnitz M. Jakob Gymnasium Pegnitz 28. April 2015 Inhaltsverzeichnis Gliederung 3 / 19 Beispiel Ergebnistabelle 100m-Lauf Platzierung 1 2 3... 8 Zeit/s 10.1 11.2 12.3... 15.7 auch Arrays genannt, benutzt man um

Mehr

Tutoraufgabe 1 (2 3 4 Bäume):

Tutoraufgabe 1 (2 3 4 Bäume): Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Übung F. Corzilius, S. Schupp, T. Ströder Tutoraufgabe ( Bäume): a) Löschen Sie den Wert aus dem folgenden Baum und geben Sie den dabei

Mehr

Felder. M. Jakob. 28. April Gymnasium Pegnitz

Felder. M. Jakob. 28. April Gymnasium Pegnitz Felder M. Jakob Gymnasium Pegnitz 28. April 2015 Inhaltsverzeichnis 1 Begriffsbildung 2 Verwendung von Feldern Begriffsbildung Gliederung 1 Begriffsbildung 2 Verwendung von Feldern M. Jakob (Gymnasium

Mehr

Allgemeine Hinweise:

Allgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 11/12 Einführung in die Informatik I Probe-Klausur Prof. Dr. Helmut Seidl, M. Schwarz, A. Herz,

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