225. 用队列实现栈

52 阅读1分钟

225. 用队列实现栈 - 力扣(LeetCode)

思路

把数据 1,2,3加载进一个栈,会得到下图:

image.png

现在把同样的数据(1,2,3)加载进队列:

image.png 题目要求我们用队列模拟栈,也就是:

image.png

实现方法

我们只需要把A队尾的元素弹出,再从队头加入即可:

image.png

class MyStack {
public:

queue<int>q1;
  

    MyStack() {

    }
      void push(int x) {
        q1.push(x);
    }
    
    int pop() {
       
     //栈:后进先出   (栈顶)3,2,1 
     //q1:先进先出  (出) 1,2,3 (进)   
     
     int size=q1.size();
     size--;
     while(size--)
     {
         //把q1里面的1,2弹出,添加到末尾
         q1.push(q1.front());
         q1.pop();
     }

      //q1:先进先出  (栈尾)3,2,1(栈顶) 
      int result=q1.front();
      q1.pop();
      return result;
    }
    
    int top() {
        //q1:先进先出  (队尾)3,2,1(队顶) 队尾就是栈顶
         return q1.back();
    }
    
    bool empty() {
    //队尾为空栈就为空

    if(q1.empty())return true;
    else return  false;
    }
};