← 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) // 2Latihan Soal
Implement Queue using Stacks
MudahLeetCode ↗
Design Circular Queue
SedangLeetCode ↗
Number of Recent Calls
MudahLeetCode ↗
Sliding Window Maximum
SulitLeetCode ↗