Gambaran Besar Dulu
Sebelum masuk ke istilah teknis, bayangkan ini dulu.
Kamu kerja di kantin sekolah. Tugas kamu: nyuci piring. Setiap piring bersih kamu tumpuk satu per satu ke atas. Nah, waktu pelanggan butuh piring, kamu ambil yang mana? Yang paling atas, yaitu piring yang paling terakhir kamu taruh.
Piring paling bawah? Dia bakal jadi yang paling terakhir diambil, padahal dia yang paling pertama ditaruh.
Itulah konsep stack. Persis seperti itu cara kerjanya di komputer.
Apa Itu Stack?
Stack adalah cara menyimpan data yang mengikuti aturan LIFO: Last In First Out. Artinya, data yang paling terakhir masuk akan jadi yang paling pertama keluar.
Kamu bisa bayangkan stack seperti kotak tinggi yang cuma bisa diakses dari atas. Kamu bisa taruh sesuatu dari atas, dan kamu cuma bisa ngambil dari atas juga. Tidak bisa dari bawah, tidak bisa dari tengah.
Tiga Operasi Dasar Stack
Ada tiga hal yang bisa kamu lakukan ke sebuah stack:
-
Push – Menaruh elemen ke atas tumpukan. Ini sama seperti kamu menaruh piring baru di atas tumpukan piring yang sudah ada. Push menambah data.
-
Pop – Mengambil elemen paling atas. Ini seperti ngambil piring paling atas dari tumpukan. Data yang diambil itu hilang dari stack. Pop mengurangi data.
-
Peek / Top – Melihat elemen paling atas tanpa mengambilnya. Kamu intip aja piringnya yang paling atas, tapi tidak diambil. Data tidak berubah, kamu cuma lihat isinya.
Simulasi Langkah per Langkah
Sekarang kita praktikkan dengan angka. Perhatikan baik-baik, kita mulai dari stack kosong.
Kondisi awal: stack kosong [ ]
- Push 3 → stack jadi
[3]. Angka 3 ada di posisi paling bawah sekaligus paling atas. - Push 5 → stack jadi
[3, 5]. Angka 5 sekarang ada di posisi paling atas. - Push 4 → stack jadi
[3, 5, 4]. Angka 4 paling atas. - Push 6 → stack jadi
[3, 5, 4, 6]. Angka 6 paling atas. - Pop → angka 6 keluar. Stack jadi
[3, 5, 4]. - Push 2 → stack jadi
[3, 5, 4, 2]. Angka 2 paling atas. - Pop → angka 2 keluar. Stack jadi
[3, 5, 4]. - Pop → angka 4 keluar. Stack jadi
[3, 5].
Hasil akhir stack dari bawah ke atas: [3, 5]. Angka 3 di bawah, angka 5 di atas.
Stack Ada di Mana-Mana di Komputer
Ini yang bikin stack menarik: kamu sudah pakai stack setiap hari tanpa sadar.
Tombol Ctrl+Z (Undo) di Microsoft Word atau Photoshop Setiap kali kamu ngetik atau ngedit, perubahan itu di-push ke stack. Waktu kamu tekan Ctrl+Z, sistem melakukan pop untuk balik ke kondisi sebelumnya. Makanya, undo itu mundurnya satu per satu dari yang paling baru.
Tombol Back di browser (Chrome, Firefox) Setiap halaman yang kamu kunjungi di-push ke stack. Waktu kamu klik Back, browser melakukan pop, balik ke halaman sebelumnya. Coba perhatiin, tombol Back-nya bisa diklik berkali-kali sampai ke halaman paling awal.
Call Stack di pemrograman Waktu sebuah program memanggil fungsi, komputer mencatat “saya lagi ada di sini” dengan push ke stack. Setelah fungsi selesai, komputer pop dan balik ke tempat semula. Ini yang bikin program bisa “ingat” harus balik ke mana setelah menyelesaikan suatu tugas.
Aktivitas Fisik: Coba Sendiri
Ambil 10 buku dari mejamu. Tumpuk satu per satu secara vertikal sambil bilang “Push [judul buku]” setiap kali kamu naruh buku. Lalu ambil satu per satu dari atas sambil bilang “Pop, yang keluar: [judul buku]”.
Perhatikan urutannya. Buku yang paling pertama kamu taruh akan jadi yang paling terakhir kamu ambil. Itu LIFO dalam bentuk nyata.
Latihan: Trace Operasi Stack Ini
Diberikan operasi berikut. Tentukan isi stack akhir!
Push A → Push B → Pop → Push C → Push D → Pop → Pop → Push E
Mari kita trace bersama:
- Push A →
[A] - Push B →
[A, B] - Pop → B keluar →
[A] - Push C →
[A, C] - Push D →
[A, C, D] - Pop → D keluar →
[A, C] - Pop → C keluar →
[A] - Push E →
[A, E]
Jawaban: isi stack akhir dari bawah ke atas adalah [A, E]. A di bawah, E di atas.
Jebakan yang Sering Terjadi
Ada beberapa kesalahan yang umum dilakukan saat baru belajar stack:
-
Salah menentukan posisi “atas”. Ingat, yang terakhir di-push selalu ada di posisi paling atas. Bukan yang paling kiri, bukan yang paling besar nilainya.
-
Lupa bahwa Pop menghapus data. Setelah Pop, elemen itu sudah tidak ada di stack. Tidak bisa dikembalikan kecuali di-push lagi.
-
Stack overflow. Kalau kamu Push terus tanpa pernah Pop, stack akan penuh. Di program komputer, ini menyebabkan error yang namanya “stack overflow”. Pernah dengar situs bernama Stack Overflow? Nama situsnya diambil dari error ini.
-
Pop dari stack kosong. Kalau kamu coba Pop dari stack yang sudah kosong, program akan error. Selalu cek dulu apakah stack sudah kosong sebelum melakukan Pop.
Kuis Singkat
Jawab tiga pertanyaan ini untuk cek pemahaman:
- Seseorang melakukan operasi berikut: Push 10, Push 20, Push 30, Pop, Pop. Berapa isi stack sekarang, dan angka berapa yang ada di posisi paling atas?
- Kamu sedang browsing dan mengunjungi halaman A, lalu B, lalu C, lalu D. Setelah itu kamu klik tombol Back dua kali. Sekarang kamu ada di halaman mana? Jelaskan pakai konsep stack.
- Apa perbedaan antara operasi Pop dan operasi Peek/Top? Kapan kamu perlu pakai Peek, bukan Pop?