Stack pada Bahasa Pemrograman C#

Stack pada Bahasa Pemrograman C#
Photo by Iva Rajović / Unsplash

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), dan Push(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> atau Dictionary<T>).
  • Butuh urutan FIFO (gunakan Queue<T>).

6. Kesimpulan

  • Stack adalah koleksi generik yang mengikuti prinsip LIFO.
  • Mendukung operasi Push, Pop, dan Peek 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!

Read more