二重にリンクされたリストを使用することが実際のシナリオで最良のオプションであると思われるのはいつですか?誰かがそれの実用的な使用を提案できますか?
多くのオペレーティングシステムでは、スレッドスケジューラ(どのプロセスをどの時点で実行する必要があるかを選択するもの)が、常に実行中のすべてのプロセスの二重リンクリストを維持します。これにより、1つのキュー(たとえば、実行するのに順番が必要なアクティブプロセスのリスト)から別のキュー(たとえば、ブロックされて何かが解放されるのを待っているプロセスのリスト)にプロセスを簡単に移動できます。ここで二重リンクリストを使用すると、これらのスプライスと再配線のそれぞれを時間内に実行することができますO(1)およびメモリ割り当てなしで、二重リンクリスト構造はキューを使用してスケジューラを実装します(前面から取り出すだけで済みます)。
Templatetypedefの答えに追加します。
次のアプリケーションを検討します。
- A music player which has next and prev buttons.
- Represent a deck of cards in a game.
- The browser cache which allows you to hit the BACK-FORWARD pages.
- Applications that have a Most Recently Used list (a linked list of file names)
- Undo-Redo functionality
特定のポイントから両側を行き来したいアプリケーション。
二重リンクリストは、MRU/LRU(Most/Least Recently Used)キャッシュの構築に使用されます。 HashMapとDoublyLinkedListを使用して実装を見つけることができます https://www.geeksforgeeks.org/design-a-data-structure-for-lru-cache/
LRUキャッシュの主な用途の1つは、Android電話のホーム画面で最近使用したアプリを保存する場合など)、最近/最も最近アクセスしたアイテムを使用する場合に使用されることです。ここにアプリケーションを説明するリンクがあります
お役に立てれば!