PAT3-08. 堆栈模拟队列

#include<algorithm>
#include<stack>
#include<iostream>
using namespace std;

typedef stack<int> Stack;
Stack st1,st2;//st1->st2
int size1,size2;

bool isfull(Stack&st){      return size1<=st1.size();   }
bool isempty(Stack&st){  return st.empty(); }
void push(Stack&st,int x){  st.push(x);   }
int pop(Stack&st){  int tmp=st.top();   st.pop();   return tmp;}

void enqueue(int x)
{
    if(!isfull(st1))    push(st1,x);
    else
    {
        if(isempty(st2))
        {
            while(!isempty(st1))    push(st2,pop(st1));
            push(st1,x);
        }
        else cout<<"ERROR:Full\n";
    }
}
void dequeue()
{
    if(!isempty(st2))   cout<<pop(st2)<<endl;
    else
    {
        if(!isempty(st1))
        {
            while(!isempty(st1))    push(st2,pop(st1));
            cout<<pop(st2)<<endl;
        }
        else cout<<"ERROR:Empty\n";
    }
}
int main(){
cin>>size1>>size2;
if(size1>size2) swap(size1,size2);
char ch;
while(cin>>ch,ch!='T')
{
    if('A'==ch){int tmp;    cin>>tmp;   enqueue(tmp);}
    if('D'==ch)dequeue();
}
return 0;}

你可能感兴趣的:(PAT3-08. 堆栈模拟队列)