#include<iostream>
#include<queue>
using namespace std;
int n;
void main()
{
deque<int> q;
int a[100],count=0,i=0,t,j,k;
printf("请输入内存页面最大容量:\n");
scanf("%d",&n);
printf("请输入页面序列,以9999结束:\n");
while(scanf("%d",&t))
{
a[i++]=t;
if(t==9999)
break;
}
//初始化内存使的页面序列
for(i=0;i<n;i++)
{
q.push_back(a[i]);
printf("内存页面为:");
for(j=i;j>=0;j--)
{
printf("%d ",a[j]);
}
printf("\n");
count++;
}
//页面占满内存后的页面序列
// printf("%d\n",q.top());
while(a[i]!=9999)
{
j=0;
while(j<n)
{
if(q[j]==a[i]) //若新进页面内存中存在
{
break;
}
j++;
}
if(j==n)
{
q.pop_front();
q.push_back(a[i]);
printf("内存页面为:");
for(j=n-1;j>=0;j--)
{
printf("%d ",q[j]);
}
printf("\n");
count++;
}
else
{
for(k=1;k<=n-1;k++)
{
q[k-1]=q[k];
}
q[n-1]=a[i];
printf("内存页面为:");
for(j=n-1;j>=0;j--)
{
printf("%d ",q[j]);
}
printf("\n");
}
i++;
}
printf("共页面中断%d次\n",count);
}