📄 clock置换算法.txt
字号:
#include<iostream.h>
#include<malloc.h>
//using namespace std;
class node
{
public:
int num;
bool A;
bool M;
class node *pnext;
node()
{
num=-1;
A=0;
M=0;
}
};
int pagesum;
int pageorder[21];
int pagechange[20];
node *phead,*p,*pr;
void show()
{
node *ps=phead;
cout<<ps->num<<" ";
ps=ps->pnext;
while(ps!=phead)
{
cout<<ps->num<<" ";
ps=ps->pnext;
}
cout<<endl;
}
void main()
{
int i;
bool sign=0;
cout<<"请输入内存页数:";
cin>>pagesum;
cout<<"请输入页面访问次序(不大于20个且以-1结束):"<<endl;
for(i=1;i<21;i++)
{
cout<<"请输入第"<<i<<"个次序:";
cin>>pageorder[i];
if(pageorder[i]<0)
{
pageorder[0]=i-1;
break;
}
else
{
cout<<"请输入该页面是否修改(1为修改0为只访问):";
cin>>pagechange[i-1];
}
}
i=1;
cout<<"输入的数有";
while(pageorder[i]>=0)
{
cout<<pageorder[i]<<" ";
i++;
}
cout<<endl;
p=(node*)malloc(sizeof(node));
p->num=-1;
p->A=0;
p->M=0;
phead=p;
p->pnext=phead;
pr=p;
for(i=0;i<pagesum-1;i++)
{
p=(node*)malloc(sizeof(node));
p->num=-1;
p->A=0;
p->M=0;
p->pnext=phead;
pr->pnext=p;
pr=pr->pnext;
}
p=phead;
int j;
for(i=1;i<=pageorder[0];i++)
{
sign=0;
while(1)
{
for(j=0;j<pagesum&&sign==0;j++)
{
if(p->num==pageorder[i])
{
p->A=1;
if(pagechange[i-1]==1)
{
p->M=1;
}
else
p->M=0;
sign=1;
show();
}
p=p->pnext;
if(1==sign)
{
break;
}
}
for(j=0;j<pagesum&&sign==0;j++)
{
if(0==p->A&&0==p->M)
{
p->num=pageorder[i];
p->A=1;
if(pagechange[i-1]==1)
p->M=1;
else
p->M=0;
sign=1;
show();
}
p=p->pnext;
if(1==sign)
{
break;
}
}
for(j=0;j<pagesum&&sign==0;j++)
{
if(0==p->A)
{
p->num=pageorder[i+1];
p->A=1;
if(pagechange[i-1]==1)
{
p->M=1;
}
else
p->M=0;
sign=1;
show();
}
p->A=0;
//p->M=0;
p=p->pnext;
if(1==sign)
{
break;
}
}
if(1==sign)
{
break;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -