雙鏈表實現LRU

2021-10-12 17:52:12 字數 1173 閱讀 8740

題目:

lru 快取機制 設計和實現乙個 lru(最近最少使用)快取資料結構,使它應該支援一下操作:get 和 put。

get(key) - 如果 key 存在於快取中,則獲取 key 的 value(總是正數),否則返回 -1。

put(key,value) - 如果 key 不存在,請設定或插入 value。當快取達到其容量時,它應該在插入新專案之前使最近最少使用的專案作廢。

#include

struct dlistnode;}

;class

solution

;this

->size = k;

this

->head =

newdlistnode(0

,0);

this

->tail =

newdlistnode(0

,0);

this

->head-

>next =

this

->tail;

this

->tail-

>pre =

this

->head;

if(operators.

size()

==0)return

; vector<

int> res;

for(vector<

int> op : operators)

else

if(op[0]

==2)}

return res;

}void

set(

int key,

int val)

else

insertfirst

(node);}

else

}int

get(

int key)

return ret;

}void

movetohead

(dlistnode* node)

void

removelast()

void

insertfirst

(dlistnode* node)

};

基於雙鏈表 hashtable實現的LRU演算法

實現原理 將cache的所有位置都用雙連表連線起來,當乙個位置被命中之後,就將通過調整鍊錶的指向,將該位置調整到煉表頭的位置,新加入的cache直接加到煉表頭中。這樣,在多次進行cache操作後,最近被命中的,就會被向煉表頭方向移動,而沒有命中的,而想鍊錶後面移動,鍊錶尾則表示最近最少使用的cach...

LRU的雙鏈表的簡單實現(小白寫法)

先給乙個節點類,屬性有 節點值 我用的int型別數值為例 前節點,後節點。前節點主要功能是便於不用遍歷的方式尋找前節點,以免多次遍歷造成時間複雜度的增長。public class node 提供乙個構造方法,去建立煉表頭 public node int value 提供兩種add方式,方便不同的情況...

雙鏈表實現

一 實驗目的 鞏固線性表的資料結構的儲存方法和相關操作,學會針對具體應用,使用線性表的相關知識來解決具體問題。二 實驗內容 建立乙個由n個學生成績的順序表,n的大小由自己確定,每乙個學生的成績資訊由自己確定,實現資料的對錶進行插入 刪除 查詢等操作。分別輸出結果。三 源 includeconst i...