📄 pageexchange.cpp
字号:
//pageExchange.cpp
//======================================
//
#include"pageExchange.h"
#include<vector>
using namespace std;
void create(vector<int>& pageList,int num)
{
for(int i = 0; i < num;i ++)
{
int temp;
temp = -1;
pageList.push_back(temp);
}
}
void create1(vector<int>& pageList,int num,vector<int>& pages,int page[],int pageCount)
{
for(int i = 0; i < num;i ++)
{
int temp;
temp = -1;
pageList.push_back(temp);
}
for(i = 0;i < pageCount;i ++)
{
pages.push_back(page[i]);
}
}
void visit(const vector<int>& pageList)
{
for(int i = 0;i < pageList.size(); i ++)
{
cout<<pageList[i]<<" ";
}
}
int isHave(const vector<int>& pageList,int cPage)
{
for(int i = 0;i < pageList.size();i ++)
{
if(pageList[i] == cPage)
{
return i;
}
}
return -1;
}
void FIFOSolve(vector<int>& pageList,vector<int>& pages,int& lostPages)
{
for(int i = 0;i < pageList.size();i ++)
{
pageList[i] = pages[i];
visit(pageList);
cout<<endl;
lostPages ++;
}
for(;i < pages.size();i ++)
{
if(isHave(pageList,pages[i]) == -1)
{
lostPages ++;
int ePage = pageList[0];
for(int j = 0;j < pageList.size() - 1;j ++)
{
pageList[j] = pageList[j + 1];
}
pageList[j] = pages[i];
visit(pageList);
cout<<"\tR"<<ePage<<endl;
}
else
{
visit(pageList);
cout<<endl;
}
}
for(i = 0;i < pageList.size();i ++)
{
pageList[i] = -1;
}
}
void OPRSolve(vector<int>& pageList,vector<int>& pages,int& lostPages)
{
vector<bool> usedMost;
for(int i = 0;i < pageList.size();i ++)
{
pageList[i] = pages[i];
visit(pageList);
cout<<endl;
bool exist = false;
usedMost.push_back(exist);
lostPages ++;
}
for(;i < pages.size();i ++)
{
if(isHave(pageList,pages[i]) == -1)
{
lostPages ++;
//int ePage = pageList[0];
int scan = -1;
for(int k = i + 1;k < pages.size();k ++)
{
if(isHave(pageList,pages[k]) != -1)
{
usedMost[isHave(pageList,pages[k])] = true;
scan = isHave(pageList,pages[k]);
}
}
int aim = -1;
for(k = 0;k < usedMost.size();k ++)
{
if(!usedMost[k])
{
aim = k;
break;
}
}
if(aim == -1)
{
aim = scan;
}
//cout<<"***********"<<aim<<" "<<scan<<endl;
int ePage = pageList[aim];
for(int j = aim;j < pageList.size() - 1;j ++)
{
pageList[j] = pageList[j + 1];
}
pageList[j] = pages[i];
visit(pageList);
cout<<"\tR"<<ePage<<endl;
for(k = 0;k < usedMost.size();k ++)
{
usedMost[k] = false;
}
}
else
{
visit(pageList);
cout<<endl;
}
}
for(i = 0;i < pageList.size();i ++)
{
pageList[i] = -1;
}
}
void LRUSolve(vector<int>& pageList,vector<int>& pages,int& lostPages)
{
for(int i = 0;i < pageList.size();i ++)
{
pageList[i] = pages[i];
visit(pageList);
cout<<endl;
lostPages ++;
}
for(;i < pages.size();i ++)
{
if(isHave(pageList,pages[i]) == -1)
{
lostPages ++;
int ePage = pageList[0];
for(int j = 0;j < pageList.size() - 1;j ++)
{
pageList[j] = pageList[j + 1];
}
pageList[j] = pages[i];
visit(pageList);
cout<<"\tR"<<ePage<<endl;
}
else
{
for(int j = isHave(pageList,pages[i]);j < pageList.size() - 1;j ++)
{
pageList[j] = pageList[j + 1];
}
pageList[j] = pages[i];
visit(pageList);
cout<<endl;
}
}
for(i = 0;i < pageList.size();i ++)
{
pageList[i] = -1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -