Aufgabenblatt 4 Einführung in die Programmierung II (SS 16)

Werbung
Aufgabenblatt 4
Einführung in die Programmierung II (SS 16)
Institut: HS Schmalkalden
Dozent: Prof. Dr. Christian Forler
Url: https://studip.fh-schmalkalden.de
Email: c.forler(at)hs-sm.de
Aufgabe 1 (4 Punkte) Warteschlange
Im folgenden wollen wir eine Warteschlange Queue von Numbers implementieren. Eine Warteschlangen arbeitet nach dem First In - First Out-Prinzip (FIFO)
und dient als temporärer Zwischenspeicher. Weitere Informationen zu Warteschlangen finden Sie unter https://de.wikipedia.org/wiki/Warteschlange_
(Datenstruktur). Implementieren Sie zunächst die Klasse Element.
Element
-n : Number
-next : Element
+Element(n : Number)
+getNumber() : Number
+getNext() : Element
+setNext(Element : next) : void
Implementieren Sie anschließend die Klasse Queue mit den folgenden Attributen
und Methoden.
• private Element start: Der Anfang der Warteschlange
• private Element end: Das Ende der Warteschlange
• public boolean isEmpty()
Gibt true zurück falls die Warteschlange leer ist, ansonsten false.
• public void add(Number n)
Fügt ein Element an das Ende der Warteschlange
• public Number remove()
Entfernt das Element am Anfang der Warteschlange
• public double getSum()
Berechnet die Summe aller Elemente.
• public double getProduct()
Berechnet das Produkt aller Elemente.
Testen Sie ihre Implementierung ausgiebig und schreiben Sie eine kleine Demoanwendung.
1
Aufgabe 2 (4 Punkte) Binärbaum
Im folgenden wollen wir einen sortieren Binärbaum (BinaryTree) welcher Zahlen speichert Numbers implementieren und Ausgeben. Bei einem Binärbaum
handelt es sich um einen Baum bei dem jeder Knoten höchstens zwei Kinder
(left, right) hat. Weitere Informationen zu Binärbäumen finden Sie unter
https://de.wikipedia.org/wiki/Bin%C3%A4rbaum.
BinaryTree
-root: Node
+BinaryTree(root : Node)
+boolean isEmpty() : boolean
+add(n :Number) : void
+hasNumber(n : Number) : boolean
+printInOrder() : void
+printPreOrder() : void
+printPostOrder() : void
Node
-n : Number
-left : Node
-right : Node
+Node(n : Number)
+Getter()
+Setter()
• public void add(Number n)
Einfügen einer Number in den Binärbaum. Ist n kleiner als die Wurzel wird
der neue Knoten im linken Teilbaum hinzugefügt, ansonsten im rechten
Teilbaum. Ist die Wurzel des Teilbaums kleiner als n wird der neue Knoten im linken Teilbaum hinzugefügt, ansonsten im rechten Teilbaum. Der
Vorgang wird solange wiederholt bis das Ende des Baums (Blattknoten)
erreicht wurde.
• public void printInOrder()
Zuerst wird rekursive der linke Teilbaum ausgegeben, dann der Wurzelknoten und schließlich wird der rechte Teilbaum rekursiv ausgegeben.
• public void printPreOrder()
Zuerst wird der Wurzelknoten ausgegeben, dann wird der linke Teilbaum
rekursiv ausgegeben und schließlich wird der rechte Teilbaum.
• public void printPostOrder()
Zuerst wird Wurzel Zuerst wird der rechte Teilbaum rekursive ausgegeben,
dann der linke Teilbaum und am Ende wird der Wurzelknoten ausgegeben.
Schreiben Sie eine Testanwendung, die einen Binärbaum mit der Wurzel 7 anlegt. Fügen Sie anschließend die folgenden Zahlen hinzu: 3.14, 5, 22.99, 1, 35,
14, 4, 2, 33, 44. Travesieren Sie den Baum anschließend pre-order, in-order
und post-order.
2
Herunterladen