注文のメンテナンスの問題(または「リスト内の注文の維持」)は、操作をサポートすることです。
singleton
:1つのアイテムでリストを作成し、そのポインターを返しますinsertAfter
:アイテムへのポインターを指定すると、そのアイテムの後に新しいアイテムを挿入し、新しいアイテムへのポインターを返しますdelete
:アイテムへのポインタを指定すると、リストから削除しますminPointer
:同じリスト内のアイテムへの2つのポインターを指定すると、リストの先頭に近い方を返します
私は、償却時間ですべての操作を実行するこの問題に対する3つの解決策を知っています。それらはすべて乗算を使用します。
- Athanasios K. Tsakalidis:一般化リンクリストでの順序の維持
- Dietz、P.、D. Sleator、リスト内の順序を維持するための2つのアルゴリズム
- Michael A. Bender、Richard Cole、Erik D. Demaine、Martin Farach-Colton、およびJack Zito、「リスト内の順序を維持するための2つの簡略化されたアルゴリズム」
A C 0にない算術演算を使用せずに、償却時間のリストで順序を維持できますか?
乗算は最近(Pentium III以降)。乗算を使用するソリューションを含めることはできますか?
—
2014年
私がこれについて読んだ場所を見つけました。IIIではなくPentium 4についてでした。代わりに、そのプロセッサからの新しい命令で乗算を実装しませんでした:M. Thorup、「AC0 Implementation on Fusion Trees and Atomic Heaps」、Proceedings of the 14th Annual ACM-SIAM Symposium on Discrete Algorithms、フィラデルフィア、 PA、米国、2003年、699〜707ページ。
—
AT