编辑代码

#include <stack>
#include <iostream>
using namespace std;
class Queue{
private:
  stack<int> s1,s2;
  //s1 入队
  //s2 出队
  //主要思路:
    //当需要出队时,
    //先将 ��1 中的所有元素倒入 ��2,然后从 s2 出栈即可。
    //入队时只需要将元素压入 s1 即可。
public:
  //入队
  void inQueue(int x)
  {
    s1.push(x);
  }
  //出队
  int deQueue()
  {
    if(s2.empty())
    {
      //如果s2 出队栈没有元素,从s1全部倒到s2.
        //1.如果s1也空了
      if(s1.empty())
      {
        printf("出不了了");
        return -1;
      }
        //2.s1不空
      while(!s1.empty())
      {
        s2.push(s1.top());
        s1.pop();
      }
    }
    int front = s2.top();
    s2.pop();
    return front;
  }
  bool isEmpty(){
    return s1.empty() && s2.empty();
  }
};
int main (){
  Queue q;
  q.inQueue(1);
  q.inQueue(2);
  
  cout << "deQueue:" << q.deQueue()<<endl;
  cout << "deQueue:" << q.deQueue()<<endl;
  
}