Sie sind auf Seite 1von 2

Prof. Dr.

Holger Peine Datenstrukturen und Algorithmen - Übungsblatt 8 - SS2015


Prof. Dr. Holger Peine
DSA - Übungsblatt 8 Hochschule Hannover

SS 2015 (Stand 2015-05-21 08:06) Fakultät IV – Abteilung Informatik


Raum 334, Tel. 0511-9296-1830
Holger.Peine@hs-hannover.de

Thema
Heap, Dictionary, Map

Spätester Termin
… für die Vorführung der Pflichtaufgaben (24Z und 26): Fr. 05.06.2015.

Aufgaben mit Punkten sollten Sie bevorzugt bearbeiten, da sie sich mit zentralen Themenstellungen
auseinandersetzen. Weitere Übungsaufgaben (0 Punkte) dienen der Vertiefung spezieller Teilbereiche. Es gilt: Die
Inhalte aller Übungsaufgaben und aller Vorlesungen sind Gegenstand der Prüfung.

Aufgabe 24Z: Schlüssel in Heap ändern (1 Punkt)


Geben Sie einen Algorithumus in Pseudo-Code an, mit dem man das in einem beliebigen Knoten in
einem gegebenen Heap gespeicherte Element ändern kann, also etwa change(Position<E> p,
E newElem) wenn die Heap-Knoten die Schnittstelle Position<E> implementieren. Nach der
Änderung soll der neue Heap wieder die Heap-Ordnung erfüllen. Gehen Sie davon aus, dass der Heap
als ArrayListCompleteBinaryTree<E> wie in der Vorlesung implementiert ist.
Wenn Sie möchten (keine Pflicht), können Sie Ihren Algorithmus testen, indem Sie ihn in Java
implementieren und als neue Methode change(Position<E> p, E newElem) der Klasse
kapitel4.HeapPriorityQueue hinzufügen und diese Klasse mit einer geeigneten main-
Methode testen.

Aufgabe 25: Implementierung von Dictionary.findAll (0 Punkte)


Der ADT Dictionary hat eine Operation Iterable<Entry<K, V>> findAll(K key), die
alle Einträge in der Map mit dem Schlüssel k zurückgibt (in einem Iterable, z.B. einer ArrayList
– bekanntlich kann ja in einem Dictionary derselbe Schlüssel mehrfach mit verschiedenen Werten
vorkommen) Wie kann dann die Operation findAll(k) optimal implementiert werden, wenn das
Dictionary selbst mit einer sortierten Liste von Elementen des Typs Entry<K, V> implementiert
ist (verlinkt oder Array-basiert – entscheiden Sie, welche Listen-Implementierung hier besser ist)?
Geben Sie den Algorithmus in Pseudo-Code oder Java an.
Hinweis: Die Laufzeit Ihrer Implementierung sollte O(log n + s) sein, wobei n die Anzahl der Schlüssel-
Wert-Paare in der Map ist und s die Größe des Ergebnis-Iterators ist.

Stand 2015-05-21 08:06 Seite 1 von 2


Prof. Dr. Holger Peine Datenstrukturen und Algorithmen - Übungsblatt 8 - SS2015

Aufgabe 26: ADT Map und Java-Bibliothek (2 Punkte)


Implementieren Sie den ADT Map in Java mithilfe einer unsortierten Liste. Verwenden Sie dabei für die
unsortierte Liste eine geeignete Klasse aus dem Paket java.util der Java-Bibliothek.
Hinweis: Das Interface Map für den ADT Map sowie ein Hilfs-Interface Entry finden Sie auf dem
Skripte-Server im selben Ordner wie dieses Übungsblatt. Dort fehlen gegenüber der Vorlesung bewusst
die Methoden keys() und values(), da Sie diese nicht mit implementieren sollen.

Stand 2015-05-21 08:06 Seite 2 von 2

Das könnte Ihnen auch gefallen