Stack (LIFO) — Struktur Data

Stack adalah struktur data yang mengikuti prinsip LIFO — Last In, First Out. Elemen terakhir yang masuk adalah yang pertama keluar. Analogi: Tumpukan piring — k

Stack adalah struktur data yang mengikuti prinsip LIFOLast In, First Out. Elemen terakhir yang masuk adalah yang pertama keluar.

Analogi: Tumpukan piring — kamu ambil piring paling atas, bukan paling bawah.

Operasi utama:

Operasi Kompleksitas Penjelasan
push(item) O(1) Tambah di atas tumpukan
pop() O(1) Ambil & hapus dari atas
peek() O(1) Lihat atas tanpa menghapus
isEmpty() O(1) Cek apakah kosong
class Stack {
  constructor() {
    this.items = [];
  }

  push(item) {
    this.items.push(item);
  }

  pop() {
    if (this.isEmpty()) return undefined;
    return this.items.pop();
  }

  peek() {
    return this.items[this.items.length - 1];
  }

  isEmpty() {
    return this.items.length === 0;
  }
}

const stack = new Stack();
stack.push("A"); // [A]
stack.push("B"); // [A, B]
stack.push("C"); // [A, B, C]
stack.pop();     // "C" → [A, B]
stack.peek();    // "B"

Kegunaan nyata:

💡 Mengapa Stack pas untuk validasi kurung? Kurung selalu cocok dengan yang terakhir dibuka. ({[]}) — saat ketemu ], harus matching dengan [ paling terakhir. Itu literal definisi LIFO. Mau pakai struktur lain? Bakal ribet.

🎭 Analogi sehari-hari (selain piring):

⚠️ Jebakan umum:

🎯 Kapan pakai Stack vs Queue?

🧪 Tebakan cepat: Push 1,2,3 lalu pop pop pop — outputnya? 3, 2, 1. Kebalikan dari urutan masuk.

TL;DR: Stack = LIFO. Operasi cuma di puncak. Pakai untuk undo, parsing, dan traversal yang butuh "kembali ke posisi sebelumnya".

Yang akan kamu pelajari