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;
}