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

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

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

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

代码:

#include<iostream>
#include<cmath>
#include<string>
#include<queue>
using namespace std;
struct que{
string a;
long long b;
long long c;
long long d;
};
    priority_queue<que> 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!"<<endl;
    else  {qu1=q.top();
     q.pop(); 
    cout<<qu1.a<<" "<<qu1.b<<endl;
    }
    }
    }
}



                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值