[leetcode]: 232. Implement Queue using Stacks

来源:互联网 发布:最右软件下载 编辑:程序博客网 时间:2024/06/05 11:53

1. 题目

Implement the following operations of a queue using stacks.

push(x) – Push element x to the back of queue.
pop() – Removes the element from in front of queue.
peek() – Get the front element.
empty() – Return whether the queue is empty.

用栈实现队列。

2.分析

队列的特点:先进先出
栈的特点:先进后出
可以通过两个栈来实现队列。一个栈s1负责处理输入数据(push),一个栈s2负责处理输出数据(pop,top)
如下流程:
push(1,2,3)–压入栈s1
pop() –pop的结果应该是1出队列,所以需要将s1中的元素转移到s2,然后在s2中pop
push(4)—压入栈s1
pop()–2需要出队列,s2不为空,直接在s2中pop
这里写图片描述

3.代码

class MyQueue {public:    MyQueue() {}    void push(int x) {        s1.push(x);    }    int pop() {        peek();        s2.pop();    }    int peek() {        if (s2.empty())        {            while (!s1.empty()) {                s2.push(s1.top());                s1.pop();            }                   }        return s2.top();    }    bool empty() {        return s1.empty() && s2.empty();    }private:    stack<int> s1;    stack<int> s2;};