Tombol “kembali” pada aplikasi tokoh daring selalu membawa pengguna ke halaman yang baru saja ditinggalkan: dari halaman detail produk ke halaman kategori, lalu ke beranda. Urutan ini kebalikan dari Queue: item yang masuk paling akhir justru keluar paling dulu. Struktur data dengan perilaku demikian dinamakan Stack dan menerapkan prinsip LIFO — Last In, First Out.
Operasi Inti Stack #
Stack menyediakan tiga operasi utama: Push meletakkan item di atas tumpukan, Pop mengambil dan melepas item teratas, dan Peek melihat item teratas tanpa melepaskannya. Bayangkan tumpukan piring: piring yang diletakkan terakhir selalu berada di posisi paling atas dan diambil lebih dulu. Runtime menyimpan item dalam array; kedua operasi Push dan Pop hanya menyentuh ujung atas sehingga keduanya cepat.
Stack<string> riwayatHalaman = new Stack<string>();
riwayatHalaman.Push("Beranda");
riwayatHalaman.Push("Kategori Elektronik");
riwayatHalaman.Push("Detail Smartphone");
Console.WriteLine($"Halaman teratas: {riwayatHalaman.Peek()}");
Console.WriteLine($"Jumlah halaman: {riwayatHalaman.Count}");
Console.WriteLine($"Kembali dari: {riwayatHalaman.Pop()}");
Console.WriteLine($"Kembali dari: {riwayatHalaman.Pop()}");
Console.WriteLine($"Halaman teratas sekarang: {riwayatHalaman.Peek()}");Output yang Dihasilkan:
Halaman teratas: Detail Smartphone
Jumlah halaman: 3
Kembali dari: Detail Smartphone
Kembali dari: Kategori Elektronik
Halaman teratas sekarang: BerandaMari kita telaah baris demi baris:
- Baris 3-5 (
riwayatHalaman.Push(...)): Tiga halaman masuk berurutan;"Detail Smartphone"yang masuk terakhir menempati posisi teratas. - Baris 7-8:
Peekmengembalikan"Detail Smartphone"tanpa mengubah isi, danCountmelaporkan 3. - Baris 10-11 (
riwayatHalaman.Pop()): Dua pemanggilanPopmelepas"Detail Smartphone"lalu"Kategori Elektronik"; urutan ini membentuk perilaku tombol kembali. - Baris 13: Setelah dua kali mundur, halaman teratas kembali
"Beranda"— halaman pertama yang dikunjungi.
Queue vs Stack dalam Satu Tabel #
| Aspek | Queue | Stack |
|---|---|---|
| Urutan keluar | Terlama masuk, terdahulu keluar (FIFO) | Terakhir masuk, terdahulu keluar (LIFO) |
| Menambah item | Enqueue di ujung belakang | Push di ujung atas |
| Mengambil item | Dequeue dari ujung depan | Pop dari ujung atas |
| Contoh penggunaan | Antrian loket, antrean cetakan | Riwayat navigasi, fitur undo |