《ACM程序设计》书 训练题中的S题

题意就是编一个输入输出队列,如果输入PUT,就输入字符串,优先级(数字),一个数字,存起来,如果输入GET,就把优先级最高的输出,优先级相同,则把先输入的输出。如果里面是空的,就输出空的队列。

思路是用自定义结构体存起来,重载小于号,使用优先队列,能让结构体按照优先级排序,然后根据题意输入。

要注意优先队列的使用和重载小于号。

代码:

#include
#include
#include
#include
using namespace std;
struct que{
string a;
long long b;
long long c;
long long d;
};
    priority_queue q; 
const bool operator<(const  que &xx, const que &yy) 
{ 
if (xx.c!=yy.c)
return xx.c> yy.c; 
else return xx.d>yy.d;
} 
int main()
{
string t;
    long long dd=0,e=1,i,j,n,m,f=1,h=0,x,y=0;
que qu2,qu1;
    while (cin>>t) 
    { if (t[0]=='P') {
    cin>>qu2.a>>qu2.b>>qu2.c;
    qu2.d=dd;dd++;
    q.push(qu2); 
    }
    else {if (q.empty())   cout<<"EMPTY QUEUE!"<


 
 

你可能感兴趣的:(队列)