uva 11995

A - I Can Guess the Data Structure!

 题意:

  给出一系列数据的操作,1 x代表向某种抽象数据结构中存入x,2 x代表从该抽象数据结构中取出的元素为x,为该抽象数据结构类型为什么?

  如果是优先队列则先取较大的元素。

思路:

  对于每种数据结构判断一次,按条件输出即可,注意为空处理。

代码:

#include <bits/stdc++.h>

using namespace std;
#define ll long long
#define ull unsigned long long
#define cls(x) memset(x,0,sizeof(x))
#define clslow(x) memset(x,-1,sizeof(x))

const int mod=1e9+7;
const int maxn=1e3+100;

int n;

struct Order {
    int x,type;
};
Order order[maxn];

bool isStack()
{
    stack<int>s;
    for(int i=1;i<=n;i++){
        int x=order[i].x;
        int type=order[i].type;
        if(type==1) s.push(x);
        else if(type==2){
            if(s.empty())   return false;
            if(s.top()!=x)  return false;
            s.pop();
        }
    }
    return true;
}

bool isQueue()
{
    queue<int>q;
    for(int i=1;i<=n;i++){
        int x=order[i].x;
        int type=order[i].type;
        if(type==1) q.push(x);
        else if(type==2){
            if(q.empty())   return false;
            if(q.front()!=x)  return false;
            q.pop();
        }
    }
    return true;
}

bool isPriorityQueue()
{
    priority_queue<int>q;
    for(int i=1;i<=n;i++){
        int x=order[i].x;
        int type=order[i].type;
        if(type==1) q.push(x);
        else if(type==2){
            if(q.empty())   return false;
            if(q.top()!=x)  return false;
            q.pop();
        }
    }
    return true;
}

int main()
{
//    freopen("in.txt","r",stdin);
    while(~scanf("%d",&n))
    {
        for(int i=1;i<=n;i++){
            scanf("%d%d",&order[i].type,&order[i].x);
        }

        int cnt=isStack()+isQueue()+isPriorityQueue();
        if(cnt==0){
            printf("impossible
");
        }
        else if(cnt==1){
            if(isStack())   printf("stack
");
            else if(isQueue())  printf("queue
");
            else if(isPriorityQueue())  printf("priority queue
");
        }
        else{
            printf("not sure
");
        }
    }
    return 0;
}
View Code
原文地址:https://www.cnblogs.com/shutdown113/p/9342684.html