地址:
点击打开链接
优先队列,注意里面有一个,如果优先级相等,按照出现的前后顺序进行排列。
代码:
#include<iostream> #include<cstdio> #include<string.h> #include<stack> #include<queue> #include<queue> using namespace std ; #define MAX 400 struct Node{ char num[MAX] ; int par; int ranks ; int priority; friend bool operator <(Node a ,Node b ){ if(a.priority==b.priority) return a.ranks>b.ranks; else return a.priority>b.priority; } }; priority_queue<Node> qe; int main(){ char req[15],msg[15],par,priority; int index = 1 ; while(scanf("%s",&req)!=EOF) { if(strcmp(req,"GET")==0) { if(qe.empty()) { printf("EMPTY QUEUE!\n"); }else { Node tp = qe.top(); qe.pop(); printf("%s %d\n",tp.num,tp.par); } }else { Node tp; scanf("%s%d%d",&tp.num,&tp.par,&tp.priority); tp.ranks = index++; qe.push(tp); } } }