Isaac Emmanuel
15 Jun 2024•EasyC++ / Python / TypeScript

Implement Stack using Queues

C++, Python and TypeScript solutions for Implement Stack using Queues.

The Implement Stack using Queues solutions are below.

Solution files

Python•implement-stack-using-queues/synced-solution.py
from collections import deque

class MyStack:
    def __init__(self):
        self.queue = deque()

    def push(self, x: int) -> None:
        self.queue.append(x)
        for _ in range(len(self.queue) - 1):
            self.queue.append(self.queue.popleft())

    def pop(self) -> int:
        return self.queue.popleft()

    def top(self) -> int:
        return self.queue[0]

    def empty(self) -> bool:
        return len(self.queue) == 0
C++•implement-stack-using-queues/synced-solution.cpp
class MyStack {
private:
    queue<int> q;
public:
    MyStack() {}

    void push(int x) {
        q.push(x);
        for (int i = 0; i < q.size() - 1; i++) {
            q.push(q.front());
            q.pop();
        }
    }

    int pop() {
        int top = q.front();
        q.pop();
        return top;
    }

    int top() {
        return q.front();
    }

    bool empty() {
        return q.empty();
    }
};
TypeScript•implement-stack-using-queues/synced-solution.ts
class MyStack {
    private queue: number[] = [];

    push(x: number): void {
        this.queue.push(x);
        for (let i = 0; i < this.queue.length - 1; i++) {
            this.queue.push(this.queue.shift()!);
        }
    }

    pop(): number {
        return this.queue.shift()!;
    }

    top(): number {
        return this.queue[0];
    }

    empty(): boolean {
        return this.queue.length === 0;
    }
}