操作系统 页面置换算法
#include<iostream>
using namespace std;
#include<vector>
vector<vector<int> > compute(vector<int> vv,int x)
{
vector<vector<int> > v;
vector<int> g;
for(int i=0;i<vv.size();i++){
int m=1;
for(int j=0;j<g.size();j++){
if(vv[i]==g[j]){
m=0;
g.erase(g.begin()+j);
g.push_back(vv[i]);
}
}
if(m==1){
g.push_back(vv[i]);
}
if(g.size()>x){
g.erase(g.begin());
}
v.push_back(g);
}
return v;
}
void coutv(vector<vector<int> > v,vector<int> vv,int x)
{
cout<<endl<<"页面置换算法的置换图如下:"<<endl<<endl;
for(int i=0;i<vv.size();i++){
cout<<vv[i]<<" ";
}
cout<<endl<<endl;
for(int i=0;i<x;i++){
for(int j=0;j<v.size();j++){
if(v[j].size()<x-i){
cout<<" ";
}
else{
cout<<v[j][x-i-1]<<" ";
}
}
cout<<endl;
}
}
int main()
{
int x,n;
vector<int> vv;
vector<vector<int> > v;
cout<<"请输入为进程分配的物理块数:"<<endl;
cin>>x;
cout<<"请输入所访问页面的页面号序列个数:"<<endl;
cin>>n;
cout<<"请输入所访问页面的页面号序列:"<<endl;
for(int i=0;i<n;i++){
int o;cin>>o;
vv.push_back(o);
}
v=compute(vv,x);
coutv(v,vv,x);
}