Das Auftragspflegeproblem (oder "Auftrag in einer Liste pflegen") besteht darin, die folgenden Vorgänge zu unterstützen:
singleton
: Erstellt eine Liste mit einem Element und gibt einen Zeiger darauf zurückinsertAfter
: einen Zeiger auf ein Element gegeben, fügt ein neues Element danach ein und gibt einen Zeiger auf das neue Element zurückdelete
: Mit einem Zeiger auf ein Element wird es aus seiner Liste entferntminPointer
: Wenn Sie zwei Zeiger auf Elemente in derselben Liste geben, wird derjenige zurückgegeben, der sich näher am Anfang der Liste befindet
Ich kenne drei Lösungen für dieses Problem, die alle Operationen in amortisierter Zeit ausführen . Sie alle verwenden die Multiplikation.
- Athanasios K. Tsakalidis: Aufrechterhaltung der Ordnung in einer verallgemeinerten verknüpften Liste
- Dietz, P., D. Sleator, Zwei Algorithmen zur Aufrechterhaltung der Ordnung in einer Liste
- Michael A. Bender, Richard Cole, Erik D. Demaine, Martin Farach-Colton und Jack Zito, „Zwei vereinfachte Algorithmen zur Aufrechterhaltung der Ordnung in einer Liste“
Kann die Reihenfolge in einer Liste in amortisierter Zeit beibehalten werden, ohne dass arithmetische Operationen verwendet werden, die nicht in A C 0 sind ?