码迷,mamicode.com
首页 > 其他好文 > 详细

225.用队列实现栈

时间:2020-07-19 00:51:50      阅读:75      评论:0      收藏:0      [点我收藏+]

标签:remove   队列   miss   要求   题解   block   cal   hat   using   

原题链接

题解

可以直接使用一个queue直接解决,在进行push()操作的时候,当我们每插入一个元素,都要保证我们新插入的元素要在队头,这就要每一次插入的时候进行队列的反转,因为从开始插入的时候就反转,所以我们新插入的元素的前面的元素都是符合要求的(即后面插入的数据比前面插入的数据在队列的前面),所以直接将前面的数据添加到现插入的数据的后面实现反转。

代码如下

class MyStack {
public:
    queue<int> q;
    /** Initialize your data structure here. */
    MyStack() {

    }
    
    /** Push element x onto stack. */
    void push(int x) {
        int n = q.size();//记录未插入前的数量,每一次插入前面的已经是反转的队列顺序
        q.push(x);
        while(n --){
            int t = q.front();
            q.pop();
            q.push(t);
        }
    }
    
    /** Removes the element on top of the stack and returns that element. */
    int pop() {
        int t = q.front();
        q.pop();
        return t;
    }
    
    /** Get the top element. */
    int top() {
        return q.front();
    }
    
    /** Returns whether the stack is empty. */
    bool empty() {
        return q.empty();
    }
};

/**
 * Your MyStack object will be instantiated and called as such:
 * MyStack* obj = new MyStack();
 * obj->push(x);
 * int param_2 = obj->pop();
 * int param_3 = obj->top();
 * bool param_4 = obj->empty();
 */

每一次都保证先插入的数据在后插入的数据之后,最后就是队列变成栈了

225.用队列实现栈

标签:remove   队列   miss   要求   题解   block   cal   hat   using   

原文地址:https://www.cnblogs.com/Lngstart/p/13338096.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!