散列表(Hash表)
实现一个基于链表法解决冲突问题的散列表
typedef struct node //记录对应的节点
{
keytype key;
...
struct noode *next;
}Renode;
Renode *LinkHsearch(Renode *HT[m], keytype k) //链地址法解决冲突时的查找算法
{
Renode *p;
int d;
d = H(k); //求Hash地址并赋值给d
p = HT[d]; //取链表头节点指针
while(p && (p->key != k))
p = p->next; //冲突时取下一同一词节点
return (p); //查找成功时p->key == k,否则p=^
}
void LinkHinsert(Renode *HT[m], Renode *S) //将指针S所指记录插入表HT的算法
{
int d;
Renode *p;
p = LinkHsearch(HT, S->key); //查找S节点
if(p) error(); //记录已存在时的处理
else
{
d = H(S->key);
S->next = HT[d];
HT[d] = S;
}
}
实现一个 LRU 缓存淘汰算法
class LRUCache{
private:
//LRU数据结构
struct Node{
int key;
int value;
Node(int k,int v):key(k),value(v){
}
};
public:
LRUCache(int c):capacity(c) {
}
int get(int key){
if (cacheMap.find(key) == cacheMap.end())
return