题意:
1代表放入;
2代表拿出;
问可能是哪种数据结构;
思路:
将题目提供的三种数据结构拿进去模拟一下就行了;
#include<cstdio> #include<cstring> #include<algorithm> #include<queue> #include<stack> using namespace std; queue<int> q; stack<int> s; priority_queue<int> pq; int main() { int n; int operate, num; while(scanf("%d",&n) == 1) { while(!q.empty()) q.pop(); while(!s.empty()) s.pop(); while(!pq.empty()) pq.pop(); bool isq = 1; bool iss = 1; bool ispq = 1; while(n--) { scanf("%d%d",&operate,&num); if(operate == 1) { if(isq) q.push(num); if(iss) s.push(num); if(ispq) pq.push(num); } if(operate == 2) { if(isq) { if(q.empty()) isq = 0; else { if(q.front() != num) isq = 0; else q.pop(); } } if(iss) { if(s.empty()) iss = 0; else { if(s.top() != num) iss = 0; else s.pop(); } } if(ispq) { if(pq.empty()) ispq = 0; else { if(pq.top() != num) ispq = 0; else pq.pop(); } } } } if(iss && !isq && !ispq) printf("stack\n"); else if(!iss && isq && !ispq) printf("queue\n"); else if(!iss && !isq && ispq) printf("priority queue\n"); else if(!iss && !isq && !ispq) printf("impossible\n"); else printf("not sure\n"); } }
原文:http://blog.csdn.net/yeyeyeguoguo/article/details/44596147