分析
使用一个优先队列(小根堆)存储每次进入的优先级,将优先级和进程名称用哈希表进行映射,
#include<bits/stdc++.h>
using namespace std;
int n;
unordered_map<int,string> mp; //哈希表
priority_queue<int,vector<int>,greater<int>> q; //小根堆q
int main()
{
cin>>n;
string op,name;
int pri;
for(int i=0;i<n;i++)
{
cin>>op;
if(op=="PUT")
{
cin>>name>>pri;
mp[pri]=name;
q.push(pri);
}
else{
if(q.size())
{
auto t=q.top();
q.pop();
cout<<mp[t]<<endl; //输出队头所对应的进程名
}
else puts("EMPTY QUEUE!"); //队空
}
}
return 0;
}
本文介绍了一个使用小根堆实现的优先级调度算法模拟程序。该程序通过哈希表存储进程名称与优先级的对应关系,并利用优先队列管理进程调度。支持添加进程和获取最高优先级进程的操作。
1126

被折叠的 条评论
为什么被折叠?



