108. Implement a Stack by using Queue
Share
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.