Grundlagen der Informatik / Algorithmen und Datenstrukturen. Aufgabe 132
|
|
- Erwin Koenig
- vor 5 Jahren
- Abrufe
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
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)
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
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
MehrAnwendungsbeispiel 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
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
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,
MehrBä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
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
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
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 - Ausdruck Ausdruck Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ Ausdruck ] ( Ausdruck
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
MehrGrundlagen 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
Mehr1. 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
MehrBä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
MehrGeordnete 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
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
MehrStä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
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
Mehr3. Ü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
MehrB6.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
MehrGrundlagen 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;
MehrEinfü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 tostring() { String result = "["+info; for(list t=next;
MehrAlgorithmen 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
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
MehrJava. 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
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.
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
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 16 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Fragen zum zweiten Übungsblatt? 2. Vorbesprechung des dritten Übungsblatts 3. Beispielaufgaben
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
MehrVorlesung 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
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
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).
MehrSchlussendlich 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 -
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
MehrPrü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
MehrALP II Dynamische Datenmengen
ALP II Dynamische Datenmengen Teil III Iteratoren Iterator-Objekt O1 O2 O3 O4 SS 2012 Prof. Dr. Margarita Esponda 22. ALP2-Vorlesung, M. Esponda 2 Motivation: Iteratoren Wir haben für die Implementierung
MehrProf. 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
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,
Mehr12. 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
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
Mehra) 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 Sommersemester 2017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. (Sortierte) Listen 2. Stacks & Queues 3. Datenstrukturen 4. Rekursion und vollständige Induktion
MehrKapitel 5: Iterierbare Container
Kapitel 5: Iterierbare Container Foreach-Schleife Interface Iterator Interface Iterable Iterator-Schleife und Foreach-Schleife Generische Liste mit Iteratoren Prof. Dr. O. Bittel, HTWG Konstanz Programmiertechnik
MehrAlgorithmen 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.
MehrInnere Klassen. Innere Klassen. Page 1. Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen.
Innere Klassen Innere Klassen Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen. Literatur: Java Tutorial & Arnold, K., Gosling, J. und Holmes,D... Page 1 Innere Klassen Der erste
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Ü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
MehrEINI 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
MehrGrundlagen der Informatik
Grundlagen der Informatik Musterklausur 1. Dynamische Datenstrukturen und objektorientierte Programmierung Zur Verwaltung einer digitalen Fotogalerie sollen Techniken der objektorientierten Programmierung
MehrAlgorithmen 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.
MehrTutoraufgabe 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
MehrKlausur 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:
MehrLö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
MehrLö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
MehrVorlesung 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
MehrAlgorithmen & 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 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 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)
MehrEINI 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
MehrAlgorithmen 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
MehrAllgemeine 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
Mehr9. 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
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++):
MehrInstitut 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
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
MehrInformatik 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.
MehrProgrammierung 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
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,
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 17/18. Kapitel 14. Bäume. Bäume 1
Kapitel 14 Bäume Bäume 1 Ziele Den Begriff des Baums in der Informatik kennenlernen Bäume als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf Bäumen verstehen und schreiben können
MehrKapitel 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
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
MehrJava Ü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
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 14. Bäume. Bäume 1
Kapitel 14 Bäume Bäume 1 Ziele Den Begriff des Baums in der Informatik kennenlernen Bäume als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf Bäumen verstehen und schreiben können
MehrProgrammieren 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
MehrInformatik 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:
MehrProgrammierung 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
MehrInstitut 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
Mehrint 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
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
MehrBä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 -
Mehr3.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
MehrProgrammieren 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
Mehr1. 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
MehrAlgorithmen 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
MehrVorlesung 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
MehrFelder. 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
MehrTutoraufgabe 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
MehrFelder. 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
MehrAllgemeine 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,
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
Mehr