hashtable+linked list を使用して LRU を実装しました。
ハッシュ テーブルには連鎖があります。コードの構造は次のとおりです。
struct Node{
int value;
struct Node *next;
struct Node* head;
struct Node* tail;
};
struct Node* lruhashtable[10];
struct Node* trackHead;
struct Node* trackTail;
trackHead および trackTail ポインターは、挿入のシーケンスを追跡するためのものです。これは、最も使用頻度の低い要素を削除するために使用されます。1 つではなく、複数の交換ポリシーが使用されていると思います。したがって、LRUは何かの組み合わせで使用されます。したがって、要素に再度アクセスするときに要素を LRU から削除する場合は、LRU から要素を削除する必要があります。
本質的に私はシーケンス全体を維持していますが、何百万ものエントリがある場合、それは悪いことです。プライオリティ キュー + ハッシュテーブルを使用する以外に、これを改善する方法はありますか