Implement Stack and Queue using Deque Easy 0 attempts
GeeksforGeeks ↗

Implement Stack and Queue using Deque

Easy Stack&Queue GeeksforGeeks

Implement both a stack (LIFO) and a queue (FIFO) using a deque (double-ended queue). A deque supports addFront, addBack, removeFront, and removeBack operations. The stack should support push and pop, while the queue should support enqueue and dequeue. Demonstrate that both data structures can be efficiently built on top of a deque.

Example:

Stack: push(1), push(2), pop() -> 2
Queue: enqueue(1), enqueue(2), dequeue() -> 1
Sample Input
Sample Output
Constraints
  • 1 <= N <= 100
  • 1 <= value <= 10^5
Topics

Approach: Deque Operations Mapping

For stack: push maps to addBack, pop maps to removeBack. For queue: enqueue maps to addBack, dequeue maps to removeFront. The deque naturally supports both patterns.

function implementStackAndQueueUsingDeque() {
  return {
    stack: (() => {
      const d = [];
      return {
        push(x) { d.push(x); },
        pop() { return d.pop(); },
        peek() { return d[d.length - 1]; },
        empty() { return d.length === 0; }
      };
    })(),
    queue: (() => {
      const d = [];
      return {
        enqueue(x) { d.push(x); },
        dequeue() { return d.shift(); },
        peek() { return d[0]; },
        empty() { return d.length === 0; }
      };
    })()
  };
}

Time Complexity: O(1) for stack operations, O(n) for queue dequeue

Space Complexity: O(n)

Saved in this browser only. Private to you.

JavaScript