Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2823
  • 博文数量: 1
  • 博客积分: 45
  • 博客等级: 民兵
  • 技术积分: 25
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-21 17:45
文章分类
文章存档

2012年(1)

我的朋友
最近访客

分类: C/C++

2012-05-21 20:39:29

      #include

       #include

#define N 50
int accessList[N];
typedef struct regitStack{
int size;
int *no;
int *head;
int *tail;
}Regit;
struct regitStack *regit;
int count;
int currentSize=0;
int createAccessList();
int createStack();
int* isEixt(int no);
int lru();
void printStack();
int main(){
    createStack();
createAccessList();
lru();
}


int createAccessList(){
int i;
printf("输入访问内存次数:");
scanf("%d",&count);
printf("输入页面访问序列\n");
for( i=0;i
printf("第%d个页面号:",i+1);
scanf("%d",&accessList[i]);
}
return 0;

}
int createStack(){
regit=(Regit*)malloc(sizeof(Regit));
regit->size=5;
regit->no=(int*)malloc(sizeof(int)*regit->size);
regit->head=regit->tail=regit->no;
return 0;
}
int lru(){
int i;
int *temp,*move;

for(i=0;i
        if((temp=isEixt(accessList[i]))==NULL)//访问的页号不在栈内
{
if(currentSizesize)//堆栈未满直接压到顶部
{
*(regit->head)=accessList[i];
regit->head++;
currentSize++;
}else{                    //下移压顶
move=regit->tail;
printf("第%d次访问时置换出%d页\n",i+1,*regit->tail);
while(1){
*move=*(move+1);
move++;
if(move==regit->head-1)
{
*move=accessList[i];
break;
}
}


}
}else{
            
if(accessList[i]!=*(regit->head-1)){  //不在顶时
move=temp;
while(1){
*move=*(move+1);
move++;
if(move==regit->head-1){
*move=accessList[i];
break;
}
}
}
}

printStack();

}
return 0;
}
int* isEixt(int no){
    int *p=regit->tail;
while(p!=regit->head){
if(*p==no){
return p;
}
p++;
}
    return NULL;
}
void printStack(){
int i;
printf("堆栈中的页面号:");
for(i=0;i
printf("%d",regit->no[i]);
}
printf("\n");
}
(function(w, d, g, J) { var e = J.stringify || J.encode; d[g] = d[g] || {}; d[g]['showValidImages'] = d[g]['showValidImages'] || function() { w.postMessage(e({'msg': {'g': g, 'm':'s'}}), location.href); } })(window, document, '__huaban', JSON);
阅读(773) | 评论(0) | 转发(3) |
0

上一篇:没有了

下一篇:没有了

给主人留下些什么吧!~~