LRU(Least recently used)最近最少使用策略算法:
是根据数据的历史访问记录(按时间排序)来进行淘汰数据的,理念:如果一个数据在最近没有被访问过,那么将来被访问的可能性也很小,当缓存空间已满的时候,如果有新的缓存数据进来,将会删除时间最早的那条数据;
1.一个空的缓存链表长度为5,依次进入
E => D => C => B => A
2.当ABCDE这5个节点中任何一个需要添加到缓存链表中,先查找链表中有没有这个值,如果存在,将该节点删除,并重新添加到表头;
B => E => D => C => A
3.链表中插入新一个数据,先遍历原先的数据,是否存在,不不存在将删除最后一个节点,并将最新的节点放在链表的表头;
A => E => D => C => B
public static void LRU()
{
//假设链表的长度为3
LinkedList<int> l = new LinkedList<int>();
l.Insert(1);
l.Insert(2);
l.Insert(3);
bool isExist = false;
Node<int> newNode = new Node<int>(4);
Node<int> temp = l.Head;
int i = 1;
if (newNode.Data != temp.Data)
{
while (temp.Next != null)
{
i++;
temp = temp.Next;
if (temp.Data == newNode.Data)//链表中存在数据
{
l.Delete(i);
l.Insert(newNode.Data,1);//插入到第一个位置
break;
}
}
if (!isExist)
{
l.Delete(i);//i = 链表长度 删除最先进入链表的数据
l.Insert(newNode.Data, 1);//插入到第一个位置
}
}
}
网友评论