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