13. Implement a Queue by using Stack

medium  - accepted / - tried

In JavaScript, we could use array to work as both a Stack or a queue.

const arr = [1, 2, 3, 4]

arr.push(5) // now array is [1, 2, 3, 4, 5]
arr.pop() // 5, now the array is [1, 2, 3, 4]

Above code is a Stack, while below is a Queue

const arr = [1, 2, 3, 4]

arr.push(5) // now the array is [1, 2, 3, 4, 5]
arr.shift() // 1, now the array is [2, 3, 4, 5]

now suppose you have a stack, which has only follow interface:

class Stack {
  push(element) { /* add element to stack */ }
  peek() { /* get the top element */ }
  pop() { /* remove the top element */}
  size() { /* count of elements */}
}

Could you implement a Queue by using only above Stack? A Queue must have following interface

class Queue {
  enqueue(element) { /* add element to queue, similar to Array.prototype.push */ }
  peek() { /* get the head element*/ }
  dequeue() { /* remove the head element, similar to Array.prototype.pop */ }
  size() { /* count of elements */ }
}

note

you can only use Stack as provided, Array should be avoided for the purpose of practicing.

Think about the edge cases.

(2)
(130)