LRU 算法简单实现
2014-09-26 10:08
246 查看
在学习很多服务器软件中,当内存不够,而需要淘汰内存的时候,一般会使用LRU算法,便产生了浓厚的兴趣。在学习操作系统的过程中发现LRU在系统中用寄存器和栈来实现。所以我就尝试着学习用栈来解决LRU的问题。当然也参考了别人的代码。
mainlru.cpp
//stack.h typedef struct{ int List[MaxSize]; int top; }Ustack; void iniStack(Ustack *s) { int i; for(i=0;i<MaxSize;i++)s->List [i]=-1; s->top =0; } int isFull(Ustack s) { if(s.top==MaxSize)return 1; //已满,返回1 else return 0; //未满,返回0 } int notEmpty(Ustack s) { if(s.top ==0)return 0; //空,返回0 else return 1; //非空,返回1; } int pushElm(Ustack *s,int x)//元素入栈,将x压入s栈顶。 { if( isFull(*s) )return 0;//如果栈已慢,则压栈失败。 else s->List[s->top++]=x; return 1; //压栈成功。 } int deleteElm(Ustack *s,int site) { int i; if( notEmpty(*s) ) //如果栈非空,则可以删除元素 { for(i=site;i< s->top-1;i++) s->List[i]=s->List[i+1]; s->top--; s->List[s->top]=-1; return 1; //删除第site位置元素成功。 } return 0; //栈已空,删除元素失败。 } int isInStack(Ustack s,int x) { int i; for(i=0;i<s.top-1;i++) if(s.List[i]==x)return i; //如果栈中有x,返回x的位置 return -1; //如果栈中没有x,返回-1; } //栈是否非空,无关紧要。 void stackPrt(Ustack s) //打印栈的状态。 { int i; for(i=0;i<s.top;i++) printf("%3d",s.List[i]); for(i=s.top;i<MaxSize;i++) //栈的空位置用“*”代替输出。 printf(" *"); }
mainlru.cpp
#define MaxSize 5 #include<stdio.h> #include"stack.h" void main() { int i,n,x,site,count=0; int test[30]; Ustack mystack; iniStack(&mystack); printf("输入序列元素数目:"); scanf("%d",&n); printf("输入含有%d个页面的序列:",n); for(i=0;i<n;i++){ scanf("%d",&x); test[i]=x; } printf("\n_____栈状态_____访问页号__累计换页次数\n"); for(i=0;i<n;i++){ site=isInStack(mystack,test[i]); if(site==-1&&isFull(mystack)){site=0;count++;} if(site!=-1)deleteElm(&mystack,site); pushElm(&mystack,test[i]); stackPrt(mystack); printf(" %d",test[i]); printf(" %d\n",count); } }
相关文章推荐
- 简单LRU算法实现缓存
- 简单LRU算法实现缓存
- 简单LRU算法实现的Cache(C++)
- 最简单的LRU算法java实现
- 简单LRU算法实现缓存
- 简单LRU算法实现缓存
- 简单LRU算法实现缓存大小的限制策略
- 简单LRU算法实现的Cache(C++)
- 简单LRU算法实现的Cache(C++)
- 简单LRU算法实现的Cache(C++)
- LRU算法的简单实现( C语言 + uthash包)
- 简单LRU算法实现缓存
- 一种简单的数据库分流的算法及实现
- 一个简单的随机数生成算法实现(C++)
- 用SHA1或MD5 算法加密数据(示例:对用户身份验证的简单实现)
- 一个简单的随机数生成算法实现(C++)
- 经典操作系统教材中的LRU算法的自编c++实现及源码。
- 无限级分类的简单算法实现及代码重点讲解(ASP)
- 数独问题的一种简单算法代码实现
- 三种简单排序算法及实现(引用)