225.用队列实现栈

本秂侑毒 提交于 2020-02-03 03:09:15

1.可以用deque直接实现
2.用两个队列queue实现
3.一个queue实现


  • 1
    基本操作,push_front(),pop_front(),push_back(),pop_back()

  • 2 两个队列
    向q1中push元素,当要pop时,用一个辅助队列q2保存q1的前q1.size()-1个元素。然后再让q1=q2即可

class MyStack {
public:
    /** Initialize your data structure here. */
    queue<int>q1;
    queue<int>q2;
    MyStack() {
        
    }
    
    /** Push element x onto stack. */
    void push(int x) {
        q1.push(x);
    }
    
    /** Removes the element on top of the stack and returns that element. */
    int pop() {
        q2=queue<int>();
        int ans;
        while(q1.size()>1){
            q2.push(q1.front());
            q1.pop();
        }
        ans=q1.back();
        q1=q2;
        return ans;
    }
    
    /** Get the top element. */
    int top() {
        return q1.back();
    }
    
    /** Returns whether the stack is empty. */
    bool empty() {
        return q1.empty();
    }
};

  • 3 一个队列
    如 队列 3 5 9,需要把3,5移动到9的后面,变成 9 3 5,之后pop即可

class MyStack {
public:
    /** Initialize your data structure here. */
    queue<int>que;
    MyStack() {
        
    }
    
    /** Push element x onto stack. */
    void push(int x) {
        que.push(x);
    }
    
    /** Removes the element on top of the stack and returns that element. */
    int pop() {
        int topp=que.back();
        int size=que.size()-1;
        while(size){
            que.push(que.front());
            que.pop();
            size--;
        }
        que.pop();
        return topp;
    }
    
    /** Get the top element. */
    int top() {
        return que.back();
    }
    
    /** Returns whether the stack is empty. */
    bool empty() {
        return que.empty();
    }
};
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!