概述:1. 用队列实现栈;2. 用栈实现队列

队列: 先进先出

栈:先进后出

队列实现栈

思路

实现

 
class MyStack {
 
public:
    void Push(int val)
    {
        if(queueSta.empty())
        {
            queueSta.push(val);
        }
        else
        {
            int cnt = queueSta.size();
            queueSta.push(val);
            while(cnt-- > 0)
            {
                queueSta.push(queueSta.front());
                queueSta.pop();
            }
        }
    }
    
    int Pop()
    {
        int res = queueSta.front();
        queueSta.pop();
        return res;
    }
    
    bool Empty() {return queueSta.empty();};
  
private:
  queue<int> queueSta;
};

栈实现队列

思路

实现

class MyQueue {
public:
  void Push(int val)
  {
      sta1.push(val);
  }
  
  int Pop()
  {
      if(sta2.empty())
      {
          while(!sta1.empty())
          {
              sta2.push(sta1.top());
              sta1.pop();
          }
      }
      
      int res = sta2.top();
      sta2.pop();
      return res;
  }
  
private:
    stack<int> sta1,sta2;
};