Uva 11995 - I Can Guess the Date Structure!

题目链接 https://vjudge.net/problem/UVA-11995

一道数据结构的模拟水题,在取出元素之前一定要注意判断集合是否为空,不然会WA

#include<bits/stdc++.h>
using namespace std;

int n;
stack<int> st;
queue<int> que;
priority_queue<int> prq;
bool isst,isque,isprq;

void init(){
    while(!st.empty()) st.pop();
    while(!que.empty()) que.pop();
    while(!prq.empty()) prq.pop();
    isst=isque=isprq=true;
}

int main(){
    while(scanf("%d",&n)==1){
        init();
        while(n--){
            int a,b;
            scanf("%d%d",&a,&b);
            if(1==a){
                if(isst) st.push(b);
                if(isque) que.push(b);
                if(isprq) prq.push(b);
            }
            else if(2==a){
                if(isst && !st.empty()){
                    int x=st.top();
                    st.pop();
                    if(x!=b) isst=false;
                }
                else isst=false;

                if(isque && !que.empty()){
                    int x=que.front();
                    que.pop();
                    if(x!=b) isque=false;
                }
                else isque=false;

                if(isprq && !prq.empty()){
                    int x=prq.top();
                    prq.pop();
                    if(x!=b) isprq=false;
                }
                else isprq=false;
            }
        }

        if(!isst && !isque && !isprq) printf("impossible\n");
        else if(isst && !isque && !isprq) printf("stack\n");
        else if(!isst && isque && !isprq) printf("queue\n");
        else if(!isst && !isque && isprq) printf("priority queue\n");
        else printf("not sure\n");
    }
    return 0;
} 
posted @ 2018-03-10 21:30  不想吃WA的咸鱼  阅读(89)  评论(0编辑  收藏  举报