Gibt es eine Datenstruktur, um eine geordnete Liste zu führen, die die folgenden Operationen in Amortized Time unterstützt?
GetElement (k) : Liefert das te Element der Liste.
InsertAfter (x, y) : Fügt das neue Element y unmittelbar nach x in die Liste ein.
Löschen (x) : Entfernen Sie x aus der Liste.
Bei den letzten beiden Operationen können Sie davon ausgehen, dass x als Zeiger direkt in die Datenstruktur gegeben ist. InsertElement gibt den entsprechenden Zeiger für y zurück. InsertAfter (NULL, y) fügt y am Anfang der Liste ein.
Ausgehend von einer leeren Datenstruktur aktualisieren beispielsweise die folgenden Vorgänge die geordnete Liste wie folgt:
- InsertAfter (NULL, a) [a]
- InsertAfter (NULL, b) [b, a]
- InsertAfter (b, c) [b, c, a]
- InsertAfter (a, d) [b, c, a, d]
- Löschen (c) [b, a, d]
Nach diesen fünf Aktualisierungen sollte GetElement (2) d und GetElement (3) einen Fehler zurückgeben.