# 232. Implement Queue using Stacks

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.

Notes:

• You must use only standard operations of a stack – which means only `push to top`, `peek/pop from top`, `size`, and `is empty` operations are valid.
• Depending on your language, stack may not be supported natively. You may simulate a stack by using a list or deque (double-ended queue), as long as you use only standard operations of a stack.
• You may assume that all operations are valid (for example, no pop or peek operations will be called on an empty queue).

``````class MyQueue {
public:
/** Initialize your data structure here. */
MyQueue() {}

/** Push element x to the back of queue. */
void push(int x) {
stack<int> tmp;
while (!st.empty()) {
tmp.push(st.top()); st.pop();
}
st.push(x);
while (!tmp.empty()) {
st.push(tmp.top()); tmp.pop();
}
}

/** Removes the element from in front of queue and returns that element. */
int pop() {
int val = st.top(); st.pop();
return val;
}

/** Get the front element. */
int peek() {
return st.top();
}

/** Returns whether the queue is empty. */
bool empty() {
return st.empty();
}

private:
stack<int> st;
};
``````

``````class MyQueue {
public:
/** Initialize your data structure here. */
MyQueue() {}

/** Push element x to the back of queue. */
void push(int x) {
_new.push(x);
}

/** Removes the element from in front of queue and returns that element. */
int pop() {
shiftStack();
int val = _old.top(); _old.pop();
return val;
}

/** Get the front element. */
int peek() {
shiftStack();
return _old.top();
}

/** Returns whether the queue is empty. */
bool empty() {
return _old.empty() && _new.empty();
}

void shiftStack() {
if (!_old.empty()) return;
while (!_new.empty()) {
_old.push(_new.top());
_new.pop();
}
}

private:
stack<int> _old, _new;
};
``````

Implement Stack using Queues

https://leetcode.com/problems/implement-queue-using-stacks/

https://leetcode.com/problems/implement-queue-using-stacks/discuss/64197/Easy-Java-solution-just-edit-push()-method

https://leetcode.com/problems/implement-queue-using-stacks/discuss/64206/Short-O(1)-amortized-C%2B%2B-Java-Ruby

LeetCode All in One 题目讲解汇总(持续更新中…)

 微信打赏 Venmo 打赏
（欢迎加入博主的知识星球，博主将及时答疑解惑，并分享刷题经验与总结，试运营期间前五十位可享受半价优惠～）

×

Help us with donation