我已经使用哈希表+链表实现了 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 指针用于跟踪插入的顺序。这用于删除最近最少使用的元素。我在想有多个替换策略被使用,而不是一个。因此,LRU 与某些东西的组合一起使用。因此,如果在我再次访问该元素时要从 LRU 中删除一个元素,那么我需要将它从 LRU 中删除。
从本质上讲,我要维护整个序列,如果有数百万个条目,那就不好了。除了使用优先级队列+哈希表之外,还有什么方法可以改善这一点