GET PUT msg1 10 5 PUT msg2 10 4 GET GET GET
EMPTY QUEUE! msg2 10 msg1 10 EMPTY QUEUE!
<span style="font-size:14px;">#include<cstdio>
#include<cstring>
#include<queue>
#include<cstdlib>
#include<algorithm>
using namespace std;
<strong><span style="color:#ff0000;">struct node
{
char name[20];
int level;//优先权
int id;//进队顺序
int par;//作业的参数
friend bool operator<(node a,node b)
{
if(a.level!=b.level)//先输出优先级高的(即level小的)
return b.level<a.level;
else //优先级相同时,根据进队顺序输出
return b.id<a.id;
}
};</span></strong>
int main()
{
char opr[10];
int count=0;
node mesg;
priority_queue<node>q;
while(~scanf("%s",opr))
{
if(strcmp(opr,"PUT")==0)
{
scanf("%s%d%d",mesg.name,&mesg.par,&mesg.level);
mesg.id=count++;//先进来的顺序小
q.push(mesg);
}
else if(strcmp(opr,"GET")==0)
{
if(!q.empty())
{
node msg=q.top();
q.pop();
printf("%s %d\n",msg.name,msg.par);
}
else
printf("EMPTY QUEUE!\n");
}
}
return 0;
}</span>版权声明:本文为博主原创文章,未经博主允许不得转载。
hdoj 1509 Windows Message Queue(优先队列)
原文地址:http://blog.csdn.net/lh__huahuan/article/details/47046083