Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1427057
  • 博文数量: 842
  • 博客积分: 12411
  • 博客等级: 上将
  • 技术积分: 5772
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-14 14:43
文章分类

全部博文(842)

文章存档

2013年(157)

2012年(685)

分类:

2012-05-22 10:56:47

      #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);
阅读(416) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~