#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. 堆栈模拟队列
最新推荐文章于 2021-05-08 17:48:40 发布