Hausaufgabe Ringliste

Werbung
Hausaufgabe
Ringliste
Korbinian Molitorisz
IPD Tichy – Lehrstuhl für Programmiersysteme
KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)
Voraussetzungen
Ein Texteditor
Ein C#-Übersetzer
Alternative: Visual Studio
Erinnerung: „Professional Edition“ aus der MSDN-AA über ELMS
Info: http://www.studentprogram-south.de/cms/home/layout/39.aspx
Anmeldung: http://www.studentprogram-south.de/cms/home/layout/52.aspx
Login: http://msdn40.e-academy.com/micror_info/
Oder mit der kostenlosen „Express Edition“
http://msdn.microsoft.com/vstudio/express/visualcsharp/
2
Hausaufgabe - Ringliste
Aufgabe: Ringliste
Eine Ringliste ist eine doppelt verkettete Liste ohne
spezielles Anfangs- oder Endelement. Implementieren Sie
eine Ringliste, in der man objecte abspeichern kann.
obj1
obj6
Kopf
obj3
obj15
obj3
3
Hausaufgabe - Ringliste
obj37
Verwendung der Liste
Die Verwaltung der Knoten soll komplett vor dem Benutzer
der List verborgen werden, er soll noch nicht einmal
merken, dass es Knoten gibt. Er instanziiert nur ein
Listenobjekt und fügt Objekte ein, sucht sie und löscht sie
wieder.
4
Hausaufgabe - Ringliste
Spezifikation
Der benötigte Speicher für die Datenstruktur darf
c1 * n + c2 nicht überschreiten, wobei
c1 die konstante Größe eines Knotens ,
n die Anzahl der Knoten und
c2 die konstante Größe einer Listeninstanz ist.
5
Hausaufgabe - Ringliste
Schnittstelle
Ein Konstruktor zum Anlegen einer Ringliste
Eine Eigenschaft uint Length, auf die nur lesend
zugegriffen werden kann. Muss mit dem Aufwand O(1)
geschehen.
Die Methoden Prepend(object o) und Append(object o),
die ein Objekt „ganz vorne“ oder „ganz hinten“ in die Liste
einfügen. Muss mit dem Aufwand O(1) geschehen.
Die Methode Rotate(long val), die den Anfang der Liste
nach vorne oder hinten dreht. Muss in O(val) gehen.
6
Hausaufgabe - Ringliste
Schnittstelle
Die Methode Delete(), die das erste Listenelement löscht
und so das zweite Listenelement zum ersten macht. Muss
in O(1) gehen.
Die Methoden SetValue(object o) und GetValue(), die
den Wert des ersten Listenelements zurückgeben bzw.
setzen. Muss in O(1) gehen.
Einen Indizierer [int pos] für den lesenden und
schreibenden Zugriff auf das pos-te Element (vom Anfang
aus gesehen). Muss in O(pos) gehen.
7
Hausaufgabe - Ringliste
Herunterladen