码迷,mamicode.com
首页 > 其他好文 > 详细

LRU代码实现

时间:2021-03-15 11:08:22      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:--   double   lru   this   oid   bool   scanf   pre   div   

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;
#define ls l,mid,rt<<1
#define rs mid+1,r,rt<<1|1
const int MAXN = 1e6+10;
const double EPS = 1e-12;

struct DLink{
    DLink *Pre;
    DLink *Next;
    int key;
    DLink(int x) : key(x),Pre(NULL),Next(NULL){}
};
int sz,cap;
map<int,bool>mp;
DLink *tail=new DLink(0),*head=new DLink(0);

void add(int x){
    DLink *now=new DLink(x);
    head->Next->Pre=now;
    now->Pre=head;
    now->Next=head->Next;
    head->Next=now;
    sz++;
    mp[x]=1;
    if(sz>cap){
        mp[tail->Pre->key]=0;
        tail->Pre->Pre->Next=tail;
        tail->Pre=tail->Pre->Pre;
        sz--;
    }
}

void get(int x){
    if(!mp[x]){
        printf("Can‘t find this page.\n");
    }
    DLink *now=head->Next;
    while(now->key!=x){
        now=now->Next;
    }
    now->Pre->Next=now->Next;
    now->Next->Pre=now->Pre;
    head->Next->Pre=now;
    now->Pre=head;
    now->Next=head->Next;
    head->Next=now;
}

int main()
{
    head->Next=tail;
    tail->Pre=head;
    scanf("%d",&cap);
    /*while(1){
        输入操作
        增加页面:add();
        获取页面:get();
        break;
    }*/
}

 通过双端队列+map实现LRU

LRU代码实现

标签:--   double   lru   this   oid   bool   scanf   pre   div   

原文地址:https://www.cnblogs.com/Mmasker/p/14528324.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!