Implement Stack and Queue using Deque
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.