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

来源:互联网 发布:2016全国中小企业数据 编辑:程序博客网 时间:2024/06/09 19:04

题意就是编一个输入输出队列,如果输入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;
    }
    }
    }
}

0 0
原创粉丝点击