队列和栈

  这里记一下STL的队列和栈。

  队列。

  头文件<queue>,操作有pop,push,front,empty,size,back,声明是queue<数据类型>q。

 

  更有用的是优先队列。

  头文件同队列,操作有pop,push,top,empty,size,声明是priority_queue<数据类型>q。

  需要学习的是一些cmp的写法,现在习惯写在数据里面,还在学习中。。。

  hdu1509为模板题。

 

#include <cstdio>
#include <queue>
using namespace std;
int co;
char s[40];
struct node
{
    char name[20];
    int num,pri,ID;
    bool operator < (const node &k) const
    {
        if(k.pri!=pri) return pri>k.pri;
        else return num>k.num;
    }
}p;
priority_queue<node>q;
int main()
{
    while(scanf("%s",s)!=EOF)
    {
        if(s[0]=='P')
        {
            scanf("%s%d%d",p.name,&p.ID,&p.pri);
            ++co;
            p.num=co;
            q.push(p);
        }else
        {
            if(q.empty()) printf("EMPTY QUEUE!\n");
            else
            {
                p=q.top();
                q.pop();
                printf("%s %d\n",p.name,p.ID);
            }
        }
    }
    return 0;
}

 

 

 

  栈。

  头文件是<stack>。操作有pop,push,top,empty,size,声明是stack<数据类型>s。

 

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