题解 | #两个队列实现栈#

两个队列实现栈

http://www.nowcoder.com/practice/9fc5ae0e203f4d079b68dee34818832a

入栈和出栈,都在 queue1 中完成,而 queue2 作为中转空间。

  • 入栈:直接入 queue1 即可。
  • 出栈:把 queue1 中除最后一个元素外的所有元素都移动到 queue2 中,再将 queue1 中的元素出队,此时即出栈;接着将 queue2 中的所有元素移动到 queue1 中。

c++实现

class Solution
{
public:
    void push(int element) {
        queue1.push(element);
    }

    int pop() {
        while(queue1.size() > 1){
            queue2.push(queue1.front());
            queue1.pop();
        }
        int temp = queue1.front();
        queue1.pop();
        while(!queue2.empty()){
            queue1.push(queue2.front());
            queue2.pop();
        }
        return temp;
    }

    int top() {
        return queue1.back();
    }

    bool empty() {
        return queue1.empty() && queue2.empty();
    }

private:
    queue<int> queue1;
    queue<int> queue2;
};
全部评论

相关推荐

黑皮白袜臭脚体育生:简历统一按使用了什么技术实现了什么功能解决了什么问题或提升了什么性能指标来写会更好另外宣传下自己的开源仿b站微服务项目,GitHub已经410star,牛客上有完整文档教程,如果觉得有帮助的话可以点个小星星,蟹蟹
点赞 评论 收藏
分享
01-17 12:35
吉首大学 Java
秋招之BrianGriffin:自己的工作自己做!😡
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务