用C++写
时间: 2023-08-15 22:07:53 浏览: 50
好的,让我来给您提供一个简单的示例程序,用C++实现FIFO算法和LRU算法。
FIFO算法示例代码:
```c++
#include <iostream>
#include <queue>
using namespace std;
int main()
{
int n, frames;
cout << "请输入页面数量 n:";
cin >> n;
cout << "请输入内存帧数 frames:";
cin >> frames;
queue<int> q;
int page, count = 0;
for (int i = 0; i < n; i++) {
cout << "请输入第 " << i + 1 << " 个页面:";
cin >> page;
if (q.size() < frames) {
if (q.empty() || q.back() != page) {
q.push(page);
count++;
}
} else {
if (q.front() != page) {
q.pop();
q.push(page);
count++;
}
}
}
cout << "FIFO算法缺页次数为:" << count << endl;
return 0;
}
```
LRU算法示例代码:
```c++
#include <iostream>
#include <list>
#include <unordered_map>
using namespace std;
int main()
{
int n, frames;
cout << "请输入页面数量 n:";
cin >> n;
cout << "请输入内存帧数 frames:";
cin >> frames;
list<int> l;
unordered_map<int, list<int>::iterator> m;
int page, count = 0;
for (int i = 0; i < n; i++) {
cout << "请输入第 " << i + 1 << " 个页面:";
cin >> page;
if (m.find(page) != m.end()) {
l.erase(m[page]);
} else {
if (l.size() == frames) {
m.erase(l.back());
l.pop_back();
}
count++;
}
l.push_front(page);
m[page] = l.begin();
}
cout << "LRU算法缺页次数为:" << count << endl;
return 0;
}
```
上述示例程序仅作为演示用途,具体实现方式可以根据实际情况进行调整。