c++打印队列,不要使用优先队列
时间: 2023-07-09 09:21:56 浏览: 81
可以使用一个简单的循环来实现打印队列,具体实现代码如下:
```c++
#include <iostream>
#include <queue>
using namespace std;
int main() {
int n, m, priority;
queue<pair<int, int>> q;
cin >> n >> m;
for (int i = 0; i < n; i++) {
cin >> priority;
q.push(make_pair(i, priority));
}
int time = 0;
while (!q.empty()) {
int index = q.front().first;
int p = q.front().second;
q.pop();
bool flag = true;
// 遍历队列中剩余的任务,找出优先级高于当前任务的任务
for (auto task : q) {
if (task.second > p) {
flag = false;
break;
}
}
if (flag) {
time++;
if (index == m) {
cout << time << endl;
break;
}
}
else {
q.push(make_pair(index, p));
}
}
return 0;
}
```
该代码中,使用了一个pair类型的队列q来存储每个任务的编号和优先级。在每次出队时,遍历队列中剩余的任务,找出优先级高于当前任务的任务,如果不存在这样的任务,则将当前任务从队列中删除,并更新时间,如果当前任务为所需查找的任务,则输出时间并结束程序,否则将其重新加入队列中等待下次出队。
阅读全文