← Kembali ke DSA
🚦

Struktur Data

Queue

Struktur FIFO (First In, First Out): elemen ditambahkan di belakang dan diambil dari depan.

Kompleksitas

Waktu (Terbaik)

O(1)

Waktu (Rata-rata)

O(1)

Waktu (Terburuk)

O(1)

Memori

O(n)

Poin Penting

  • ›FIFO: elemen yang pertama di-enqueue adalah yang pertama di-dequeue
  • ›Enqueue (tambah di belakang) dan Dequeue (ambil dari depan) bernilai O(1)
  • ›Gunakan deque (double-ended queue) agar kedua ujung bisa diakses dalam O(1)
  • ›Queue berbasis array punya dequeue O(n), kecuali memakai circular buffer atau deque
  • ›Penting untuk BFS, penjadwalan tugas, dan buffering

Contoh Kode

Swift
struct Queue<T> {
    private var elements: [T] = []

    mutating func enqueue(_ element: T) {
        elements.append(element)
    }

    @discardableResult
    mutating func dequeue() -> T? {
        guard !elements.isEmpty else { return nil }
        return elements.removeFirst()  // O(n) — use a proper deque for O(1)
    }

    func peek() -> T? { elements.first }
    var isEmpty: Bool { elements.isEmpty }
    var count: Int { elements.count }
}

var queue = Queue<Int>()
queue.enqueue(1); queue.enqueue(2); queue.enqueue(3)
print(queue.peek()!)  // 1
queue.dequeue()
print(queue.count)    // 2

Latihan Soal

Implement Queue using Stacks
Design Circular Queue
Number of Recent Calls
Sliding Window Maximum