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.

csharp
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:

text
Halaman teratas: Detail Smartphone
Jumlah halaman: 3
Kembali dari: Detail Smartphone
Kembali dari: Kategori Elektronik
Halaman teratas sekarang: Beranda

Mari kita telaah baris demi baris:

  1. Baris 3-5 (riwayatHalaman.Push(...)): Tiga halaman masuk berurutan; "Detail Smartphone" yang masuk terakhir menempati posisi teratas.
  2. Baris 7-8: Peek mengembalikan "Detail Smartphone" tanpa mengubah isi, dan Count melaporkan 3.
  3. Baris 10-11 (riwayatHalaman.Pop()): Dua pemanggilan Pop melepas "Detail Smartphone" lalu "Kategori Elektronik"; urutan ini membentuk perilaku tombol kembali.
  4. Baris 13: Setelah dua kali mundur, halaman teratas kembali "Beranda" — halaman pertama yang dikunjungi.

Queue vs Stack dalam Satu Tabel #

AspekQueueStack
Urutan keluarTerlama masuk, terdahulu keluar (FIFO)Terakhir masuk, terdahulu keluar (LIFO)
Menambah itemEnqueue di ujung belakangPush di ujung atas
Mengambil itemDequeue dari ujung depanPop dari ujung atas
Contoh penggunaanAntrian loket, antrean cetakanRiwayat navigasi, fitur undo