15 Jun 2024C++ / Python / TypeScriptEasy

Implement Stack using Queues

Collected C++, Python, TypeScript solutions for implement stack using queues. Add a dedicated write-up later if you want deeper notes.

auto-generated entry for Implement Stack using Queues. the solution files are available below.

solution files

  • C++ implement-stack-using-queues/synced-solution.cpp
  • Python implement-stack-using-queues/synced-solution.py
  • TypeScript implement-stack-using-queues/synced-solution.ts

Solution files

Pythonimplement-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) - class="syntax-number">1):
            self.queue.append(self.queue.popleft())

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

    def top(self) -> int:
        return self.queue[class="syntax-number">0]

    def empty(self) -> bool:
        return len(self.queue) == class="syntax-number">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 = class="syntax-number">0; i < q.size() - class="syntax-number">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();
    }
};
TypeScriptimplement-stack-using-queues/synced-solution.ts
class MyStack {
    private queue: number[] = [];

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

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

    top(): number {
        return this.queue[class="syntax-number">0];
    }

    empty(): boolean {
        return this.queue.length === class="syntax-number">0;
    }
}