C++实现LRU算法
发布网友
发布时间:2022-04-29 07:08
我来回答
共2个回答
热心网友
时间:2022-06-20 23:50
#include<iostream>
using namespace std;
int size;
int *w;
//定义一个动态数组
struct mem
{
int num;
int count;
}memBlock[3]={0,0,0,0,0,0};
void LRU()
{
for( int i = 0; i < size; i++ )
{
int maxCount = memBlock[0].count;
int maxPos = 0;
int j = 0;
bool bFind = false;
for( j = 0; j < 3; j++ )
{
// 标记出count值最大的位置
if( maxCount < memBlock[j].count )
{
maxCount = memBlock[j].count;
maxPos = j;
}
// 将所有的count值都+1
memBlock[j].count++;
// 如果命中,将其count值置为0
if( w[i] == memBlock[j].num )
{
memBlock[j].count = 0;
bFind = true;
}
}
// 未命中,将count最大的拿来替换
if( !bFind )
{
memBlock[maxPos].num = w[i];
memBlock[maxPos].count = 0;
}
for(j = 0; j < 3; j++) //输出
cout << memBlock[j].num << " ";
cout <<" "<< endl;
}
}
int main() //主函数
{
cout<<"请输入需访问的页面数量:"<<endl;
cin>>size;
w = new int[size];
cout<<"请输入需要访问的页面"<<endl;
for(int a=0;a<size;a++)
{
cin>>w[a];//输入数组
}
cout<<endl<<"(LRU)"<<endl;
LRU();
return 0;
}
引用 : 回答者: floxer | *
热心网友
时间:2022-06-20 23:50
http://zhidao.baidu.com/question/98827140.html
这是别人之前问的额,你可以参考一下~~~