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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值