108. Implement a Stack by using Queue

JavaScriptAlgorithm

medium  - accepted / - tried

This is reversed problem of 13. Implement a Queue by using Stack

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 Queue, which has only follow 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 */ }}

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

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

note

you can only use Queue as provided. Don't use Array, it is not what this is for.

Always try to find a better approach.