• Keine Ergebnisse gefunden

Algorithmen und Datenstrukturen (WS 2019) Aufgabenblatt 8

N/A
N/A
Protected

Academic year: 2022

Aktie "Algorithmen und Datenstrukturen (WS 2019) Aufgabenblatt 8"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

TU Kaiserslautern – FB Informatik 07.01.20

Dr. Patrick Michel

Algorithmen und Datenstrukturen (WS 2019) Aufgabenblatt 8

zu bearbeiten bis: 13.01.20 - 15.01.20

Aufgabe 8.1 (Verkettete Listen - Theorie)

In der Vorlesung haben Sie eine alternative Implementierung des List Interface gesehen, mit Hilfe von einzelt verketteten Listen (SingleLinkedList).

• Annotieren Sie an jede Methode vonSingleLinkedListdie best und worst-case Kom- plexit¨at und vergleichen Sie mit denen vonArrayList.

Aufgabe 8.2 (Verkettete Listen - Praxis)

Implementieren Sie nun eine verbesserte Fassung von verketteten Listen, die einige Operationen effizienter macht, aber auch von der Implementierung her gleichf¨ormiger und insgesamt dadurch einfacher ist. Insbesondere soll diese Implementierung folgende Eigenschaften haben:

• Knoten sind doppeltverkettet, das heißt sie haben nun auch eine Referenzprev auf den Vorg¨anger. Die Implentierung soll entsprechendDoubleLinkedListheißen.

• Wir verwenden einenAnker-Knoten, so dass wir keinerleinullReferenzen mehr verwen- den (und auch nicht mehr auf diese pr¨ufen m¨ussen). Der Anker zeigt mitnextauf das erste Element der Liste, mitprevauf das letzte Element der Liste. Ist die Liste leer, dann zeigt der Anker mit beiden Referenzen auf sich selbst. Damit ist die Liste zu jedem Zeitpunkt ein Ringvon Knoten und der Anker ist der Einstieg in diesen Ring.

• Die L¨ange der Liste wird explizit in einem Attributsizeverwaltet.

Wir gehen bei der Implementierung wiefolgt vor:

• Die beiden Hilfsmethoden insertNode undremoveNode f¨ugen Knoten in den Ring aus Knoten ein oder entfernen einen. Sie sind die einzigen Methoden die an der Verkettung der Liste ¨Anderungen vornehmen.

• Die HilfsmethodenodeAtiteriert durch die Liste zu einem Index und gibt den entsprechen- den Knoten zur¨uck.

• Alle anderen Methoden k¨onnen dann mit Hilfe dieser drei Methoden meist in einer einzigen Zeile implementiert werden.

Implementieren Sie also die Hilfsmethoden und dann die eigentliche Schnittstelle vonListmit deren Hilfe.

• Implementieren Sie inDoubleLinkedListnun die beiden ADTsStackundQueue.

Algorithmen und Datenstrukturen (WS 2019) (8) 1/2

(2)

Aufgabe 8.3 (Abstrakte Datentypen - Theorie)

Wir betrachten die Eignung der verschiedenen Implementierungen f¨ur abstrakte Datentypen (ADTs).

• Bewerten Sie die Eignung vonDoubleLinkedListals Implementierung f¨urQueueund vergleichen Sie mitArrayList.

Eine Variante des TypsQueue, mit denselben Operationen, ist diePriorityQueue. Sie un- terscheidet sich im Verhalten vonQueuedadurch, dass diedequeue-Operation nicht das ¨alteste Element entfernt, sondern das mit der h¨ohesten ”Priorit¨at”. Die Priorit¨at kann dabei von den Elementen in der Queue ableitbar sein, z.B. das Alter einer Bestellung oder die Priorit¨at eines Netzwerkpakets in einem ¨uberlasteten Router. Im letzteren Fall ist die Kapazit¨at der Queue meist beschr¨ankt und es sollen zuerst die weniger wichtigen Pakete bei ¨Uberlast verworfen werden.

Eine Implementierung vonPriorityQueue– egal ob beschr¨ankt oder nicht – braucht also eine Strategie beim Entfernen das maximale Element zu finden.

• Diskutieren Sie wie Sie diesen ADT unter Verwendung einerDoubleLinkedListim- plementieren k¨onnten.

• Welche Komplexit¨at haben dabei dieenqueueund diedequeue/peekOperationen.

• Uberlegen Sie welche Datenstruktur, die Sie bisher in der Vorlesung kennengelernt haben,¨ sich besser eignen w¨urde und begr¨unden Sie warum.

Materialien: https://softech.cs.uni-kl.de/homepage/de/teaching/WS19/algodat

Algorithmen und Datenstrukturen (WS 2019) (8) 2/2

Referenzen

ÄHNLICHE DOKUMENTE

Diese soll ein Boolesches Array b der L¨ange N + 1 zur¨uckliefern, das f¨ur jede Zahl k = 0, ..., N anzeigt ob es sich um eine Primzahl handelt (b[k] == true) oder nicht (b[k]

c) Implementieren Sie nun eine Variante der Matrix-Multiplikation welche die Matrix B vor der Multiplikation transponiert und bei der Multiplikation dann jeweils Zeilen von A mit

• Insertionsort (Skizzieren Sie das Feld nach jedem Durchlauf der ¨außeren Schleife).. • Selectionsort (Skizzieren Sie das Feld nach jedem Durchlauf der

Stellen Sie zun¨achst das Array als Baum dar und skizieren Sie dann das Feld nach jedem Durchlauf von max heapify, sowohl beim initialen Bauen des Heaps, als auch nach je- dem

Um die beste L¨osung f¨ur einen Bereich zu finden, vergleichen Sie drei L¨osungen: (1) die beste L¨osung, die rekur- siv in der linken H¨alfte gefunden wurde, (2) die beste L¨osung,

• Erg¨anzen Sie nun die iterator() Methode f¨ur die Klasse DoubleLinkedList und implementieren sie die gleichen drei Methoden im passenden Iterator?. • Welche Komplexit¨at haben

• Die Methode createRandomPlane(int size, String seed) konstruiert eine zuf¨allige Instanz mit size St¨adten, bei der jede Stadt zuf¨allige Koordinaten auf einer virtuellen

plexed togethel In a sysklll and have separate Drive Select lilies. For additional methods of selecting drive'i. The access motion is initialed on each logical/ero to