最近最久未使用LRU

#include

using namespace std;

class LRUStack

{

public:

LRUStack(int len)

{

p=new int[len];

length=len;

//初始化栈,都为-1

for(int i=0;i

p[i]=-1;

}

~LRUStack()

{

delete[]p;

}

int push(int a)

{

int pos=search(a);

int index=lastpos();

if(pos!=-1)

{

//已经存在

for(int i=pos;i

{

p[i]=p[i+1];

}

p[index]=a;

return -1;

}

else

{

//不存在

if(isfull())

{

//已经满了

int last=p[0];

for(int i=pos;i

{

p[i]=p[i+1];

}

p[index]=a;

return last;

}

else

{

p[lastpos()+1]=a;

return -1;

}

}

}

private:

int *p;

int length;

int search(int a)

{

for(int i=0;i

{

if(p[i]==a)

return i;

}

//没有找到

return -1;

}

bool isfull()

{

if(p[length-1]==-1)return false;

return true;

}

int lastpos()

{

for(int i=0;i

{

if(p[i]==-1)

return i-1;

}

return length-1;

}

};

int main()

{

int length;

cout

cin>>length;

if(length

{

cout

return 0;

}

LRUStack LruStack(length);

int num;

int pushnum;

while(true)

{

cout

cin>>num;

pushnum=LruStack.push(num);

if(pushnum==-1)

cout

else

cout

}

return 0;

}

#include

using namespace std;

class LRUStack

{

public:

LRUStack(int len)

{

p=new int[len];

length=len;

//初始化栈,都为-1

for(int i=0;i

p[i]=-1;

}

~LRUStack()

{

delete[]p;

}

int push(int a)

{

int pos=search(a);

int index=lastpos();

if(pos!=-1)

{

//已经存在

for(int i=pos;i

{

p[i]=p[i+1];

}

p[index]=a;

return -1;

}

else

{

//不存在

if(isfull())

{

//已经满了

int last=p[0];

for(int i=pos;i

{

p[i]=p[i+1];

}

p[index]=a;

return last;

}

else

{

p[lastpos()+1]=a;

return -1;

}

}

}

private:

int *p;

int length;

int search(int a)

{

for(int i=0;i

{

if(p[i]==a)

return i;

}

//没有找到

return -1;

}

bool isfull()

{

if(p[length-1]==-1)return false;

return true;

}

int lastpos()

{

for(int i=0;i

{

if(p[i]==-1)

return i-1;

}

return length-1;

}

};

int main()

{

int length;

cout

cin>>length;

if(length

{

cout

return 0;

}

LRUStack LruStack(length);

int num;

int pushnum;

while(true)

{

cout

cin>>num;

pushnum=LruStack.push(num);

if(pushnum==-1)

cout

else

cout

}

return 0;

}


相关内容

  • LRU页面置换算法模拟
  • 页面置换算法模拟-最近最久未使用置换算法|课程设计|计算机数据库课程设计 一.设计目的 1.用C语言实现最近最久未使用(LRU)置换算法. 2.了解内存分页管理策略 3.掌握调页策略 4.掌握一般常用的调度算法 5.选取调度算法中的典型算法,模拟实现 二.设计任务 在Window98/2000 系统 ...

  • 存储器管理实验报告
  • 操作系统实验报告 2012 年 12 月 24 日 学 专 号 业 1008114124 姓 名 L 刘凯利 班 级 时 间 12 月 27 日 计科二班 计算机科学与技术 实验题目: 存储器管理 实验目的: 1.通过模拟实现最佳页面置换的算法,熟悉存储器管理方式: 2.掌握虚拟存储请求页式存储管理 ...

  • 常用页面置换算法模拟实验
  • 目录 一.摘要 . ................................................ 3 二.正文 ................................................. 4 三.设计总结 ......................... ...

  • 操作系统-请求页式存储管理实验报告
  • 操作系统 实验三 存储管理实验 班级: 学号: 姓名: 目 录 1. 实验目的 .............................................................................................................. ...

  • 实验五 虚拟存储管理
  • 实验五 虚拟存储管理 一. 实验目的 存储管理的主要功能之一是合理地分配空间.请求页式管理是一种常用的虚拟存储管理技术.本实验的目的是通过请求页式管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法. 二. 实验内容 通过计算不同算法的命中率比较算法的优劣.同时也考 ...

  • 操作系统课程设计页面置换算法
  • 操作系统 课程设计说明书 题目: 页面置换算法程序设计 院 系: 计算机科学与工程 专业班级: 学 号: 学生姓名: 指导教师: 2014年 11月 21 日 2014年11月21日 安徽理工大学课程设计(论文)成绩评定表 目 录 1 问题描述 ........................... ...

  • 3页面置换算法
  • 页面置换算法的演示 一.题目要求: 设计一个虚拟存储区和内存工作区,编程序演示下述算法的具体实现过程,并计算访问命中率: 要求设计主界面以灵活选择某算法,且以下算法都要实现 1) 最佳置换算法(OPT):将以后永不使用的或许是在最长(未来)时间内不再被访问的页面换出. 2) 先进先出算法(FIFO) ...

  • 页面置换算法修改
  • 操作系统实验报告 实验地点: 班级: GS4304 实验日期: 学号: 2015-11-11 姓名: 13 数字媒体 一.实验题目:页面置换算法修改 二.实验过程: 实验代码: //=========================================================== ...

  • 页面置换算法实验报告
  • 实 验 报 告 实验人: 学号: 日期: 2010-12-29 院(系): 信科院计算机系 专业(班级): 实验题目: 常用页面置换算法模拟实验 实验二 存储管理 一. 实验目的 通过模拟实现请求页式存储管理的几种基本页面置换算法,了解虚拟存储技术的特点,掌握虚拟存储请求页式存储管理中几种基本页面置 ...