Deque (Double-Ended Queue) — Struktur Data

Deque (Double-Ended Queue) adalah antrian yang bisa menambah dan menghapus elemen dari kedua ujung — depan dan belakang. Deque menggabungkan kemampuan Stack dan

Deque (Double-Ended Queue) adalah antrian yang bisa menambah dan menghapus elemen dari kedua ujung — depan dan belakang.

Deque menggabungkan kemampuan Stack dan Queue dalam satu struktur.

Operasi utama:

Operasi Kompleksitas
addFront(item) O(1)
addBack(item) O(1)
removeFront() O(1)
removeBack() O(1)
class Deque {
  constructor() {
    this.items = {};
    this.head = 0;
    this.tail = 0;
  }

  addBack(item) {
    this.items[this.tail] = item;
    this.tail++;
  }

  addFront(item) {
    this.head--;
    this.items[this.head] = item;
  }

  removeFront() {
    if (this.isEmpty()) return undefined;
    const item = this.items[this.head];
    delete this.items[this.head];
    this.head++;
    return item;
  }

  removeBack() {
    if (this.isEmpty()) return undefined;
    this.tail--;
    const item = this.items[this.tail];
    delete this.items[this.tail];
    return item;
  }

  isEmpty() {
    return this.tail - this.head === 0;
  }
}

Kegunaan nyata:

🎭 Analogi sehari-hari: Deque = pintu masuk DAN pintu keluar di mall yang ada di dua sisi (depan & belakang). Orang bisa masuk dari mana saja, keluar dari mana saja. Lebih fleksibel dari Stack atau Queue yang cuma punya satu pintu.

💡 Kapan Deque > Stack/Queue? Saat butuh dua arah:

⚠️ Jebakan umum:

🎯 Decision tree:

TL;DR: Deque = Queue dua sisi. Tambah/hapus front & back semuanya O(1). Pakai untuk sliding window, undo+redo, dan algoritma yang butuh akses dua ujung.