FIFO算法c++实现
时间: 2023-09-14 19:06:34 浏览: 86
下面给出FIFO算法的C++实现:
```c++
#include <iostream>
#include <queue>
using namespace std;
int main() {
int n, m; // n表示物理块数,m表示访问序列长度
cin >> n >> m;
queue<int> q; // 使用队列实现FIFO算法
int cnt = 0; // 记录缺页次数
for (int i = 0; i < m; i++) {
int x;
cin >> x; // x表示访问的页面号
if (q.size() < n) { // 如果物理块未满,直接加入队列
q.push(x);
} else { // 否则,先将队首元素移除,再加入新元素
int front = q.front();
q.pop();
if (front != x) cnt++; // 如果队首元素与新元素不同,缺页次数加1
q.push(x);
}
}
cout << cnt << endl; // 输出缺页次数
return 0;
}
```
其中,使用 `queue` 类型来实现FIFO算法,`q.size()` 表示队列中元素个数,`q.front()` 表示队首元素,`q.pop()` 表示将队首元素移除。在算法中,如果物理块未满,直接将新元素加入队列;否则,将队首元素移除,再将新元素加入队列,并判断队首元素与新元素是否相同,若不同,则缺页次数加1。
阅读全文