Back to all solutions

#232 - Implement Queue using Stacks

Problem Description

Implement a first in first out (FIFO) queue using only two stacks.

The implemented queue should support all the functions of a normal queue (push, peek, pop, and empty).

Implement the MyQueue class:

  • void push(int x) Pushes element x to the back of the queue.
  • int pop() Removes the element from the front of the queue and returns it.
  • int peek() Returns the element at the front of the queue.
  • boolean empty() Returns true if the queue is empty, false otherwise.

Solution

var MyQueue = function() {
  this.data = [];
};

/**
 * @param {number} x
 * @return {void}
 */
MyQueue.prototype.push = function(x) {
  this.data.push(x);
};

/**
 * @return {number}
 */
MyQueue.prototype.pop = function() {
  return this.data.shift();
};

/**
 * @return {number}
 */
MyQueue.prototype.peek = function() {
  return this.data[0];
};

/**
 * @return {boolean}
 */
MyQueue.prototype.empty = function() {
  return !this.data.length;
};

/**
 * Your MyQueue object will be instantiated and called as such:
 * var obj = new MyQueue()
 * obj.push(x)
 * var param_2 = obj.pop()
 * var param_3 = obj.peek()
 * var param_4 = obj.empty()
 */