Stack pada Bahasa Pemrograman C#
Dalam pemrograman, ada situasi di mana kita ingin menyimpan dan mengambil data dengan urutan tertentu. Misalnya, undo-redo di editor teks, navigasi browser, atau sistem antrian tugas. Nah, di sinilah Stack dalam C# berperan!
Stack adalah struktur data yang mengikuti prinsip LIFO (Last In, First Out), artinya elemen terakhir yang masuk adalah yang pertama keluar. Ini mirip seperti tumpukan piring di restoran, di mana piring yang terakhir ditumpuk akan diambil lebih dulu.
Yuk, kita bahas apa itu Stack dalam C#, cara penggunaannya, dan contoh implementasinya!
1. Apa Itu Stack dalam C#?
Stack<T>
adalah koleksi generik dalam C# yang digunakan untuk menyimpan sekumpulan data dengan konsep LIFO (Last In, First Out).
Ciri-Ciri Stack
✅ Menggunakan prinsip LIFO, elemen terakhir yang masuk akan keluar lebih dulu.
✅ Mudah menambahkan (Push
) dan mengambil (Pop
) elemen.
✅ Cocok untuk implementasi seperti undo-redo, rekursi, dan navigasi.
✅ Lebih cepat daripada List untuk operasi penambahan dan penghapusan elemen terakhir.
2. Cara Menggunakan Stack
Untuk menggunakan Stack<T>
, kita perlu menambahkan namespace System.Collections.Generic
.
Contoh Stack Sederhana
using System;
using System.Collections.Generic;
class Program {
static void Main() {
Stack<int> angka = new Stack<int>();
angka.Push(10);
angka.Push(20);
angka.Push(30);
Console.WriteLine("Elemen di paling atas: " + angka.Peek());
Console.WriteLine("Mengambil elemen: " + angka.Pop());
Console.WriteLine("Elemen berikutnya: " + angka.Peek());
}
}
Output:
Elemen di paling atas: 30
Mengambil elemen: 30
Elemen berikutnya: 20
Penjelasan:
Push(10)
,Push(20)
, danPush(30)
menambahkan elemen ke dalam Stack.Peek()
digunakan untuk melihat elemen teratas tanpa menghapusnya.Pop()
mengambil elemen teratas dan menghapusnya dari Stack.
3. Operasi Dasar dalam Stack
Menambahkan Elemen ke Stack (Push
)
angka.Push(40);
angka.Push(50);
Mengambil Elemen dari Stack (Pop
)
int elemenTeratas = angka.Pop(); // Menghapus dan mengembalikan elemen teratas
Melihat Elemen Teratas tanpa Menghapus (Peek
)
Console.WriteLine("Elemen paling atas: " + angka.Peek());
Mengecek Apakah Stack Kosong (Count
)
if (angka.Count == 0) {
Console.WriteLine("Stack kosong!");
}
Menghapus Semua Elemen dari Stack (Clear
)
angka.Clear();
4. Looping pada Stack
Kita bisa mengakses semua elemen dalam Stack menggunakan foreach
.
foreach (var item in angka) {
Console.WriteLine("Elemen dalam Stack: " + item);
}
5. Kapan Harus Menggunakan Stack?
✅ Gunakan Stack jika:
- Data harus diproses dengan prinsip LIFO (Last In, First Out).
- Ingin mengelola undo-redo, navigasi halaman, atau rekursi.
- Perlu operasi tambah dan hapus yang cepat di elemen terakhir.
❌ Jangan gunakan Stack jika:
- Perlu mengakses elemen secara acak (gunakan
List<T>
atauDictionary<T>
). - Butuh urutan FIFO (gunakan
Queue<T>
).
6. Kesimpulan
- Stack adalah koleksi generik yang mengikuti prinsip LIFO.
- Mendukung operasi
Push
,Pop
, danPeek
untuk mengelola elemen dalam Stack. - Cocok digunakan untuk implementasi undo-redo, rekursi, dan navigasi.
- Lebih cepat dalam operasi penambahan dan penghapusan dibanding
List<T>
.
Dengan memahami Stack dalam C#, kamu bisa mengelola data dengan lebih efisien dan sesuai dengan kebutuhan struktur tumpukan!