C# Stack dengan Contoh Push & Pop

⚡ Ringkasan Cerdas

Stack di C# adalah koleksi dari namespace System.Collections yang mengikuti prinsip last in, first out (LIFO), di mana metode Push menambahkan elemen ke bagian atas dan metode Pop menghapusnya.

  • 📚 Konsep LIFO: Stack bekerja seperti tumpukan buku, jadi elemen terakhir yang dimasukkan adalah elemen pertama yang dikeluarkan.
  • Tekan dan Lepas: Metode Push menambahkan elemen ke bagian atas tumpukan, dan metode Pop menghapus dan mengembalikan elemen teratas tersebut.
  • 👀 Intip, Hitung, Berisi: Metode Peek membaca elemen teratas tanpa menghapusnya, sedangkan Count dan Contains melaporkan ukuran dan keanggotaan.
  • 🧪 Contoh soal: Dua program konsol mendemonstrasikan Push dengan Count dan Contains, lalu Pop, sehingga Anda dapat trace. urutan LIFO.
  • Susunan umum: Tumpukan Kelas di System.Collections.Generic menambahkan keamanan tipe pada waktu kompilasi dan menghindari boxing untuk kode C# baru.
  • 🤖 Bantuan AI: GitHub Copilot membuat kerangka operasi Stack C#, dan ML.NET membaca data melalui koleksi bertipe alih-alih stack non-generik.

C# Tumpukan

Apa itu Tumpukan di C#?

Tumpukan adalah kumpulan kasus khusus yang mewakili konsep masuk terakhir keluar pertama (LIFO). Untuk memahami LIFO terlebih dahulu, mari kita ambil contoh. Bayangkan setumpuk buku yang masing-masing bukunya ditumpuk satu sama lain.

Konsep masuk terakhir keluar pertama dalam hal buku berarti hanya buku paling atas yang dapat dikeluarkan dari tumpukan buku. Tidak mungkin mengeluarkan buku di antara keduanya, karena hal itu akan mengganggu pengaturan tumpukan.

Oleh karena itu dalam C#, tumpukan juga bekerja dengan cara yang sama. Elemen ditambahkan ke tumpukan, satu di atas yang lain. Proses penambahan elemen ke tumpukan disebut operasi push. Untuk menghapus elemen dari tumpukan, Anda juga dapat menghapus elemen paling atas dari tumpukan. Operasi ini dikenal sebagai pop.

Mari kita lihat operasi yang tersedia untuk koleksi Stack secara lebih rinci.

Deklarasi tumpukan

Tumpukan dibuat dengan bantuan tipe Stack Data. Kata kunci “baru” digunakan untuk membuat objek Stack. Objek tersebut kemudian ditugaskan ke variabel st.

Stack st = new Stack()

Menambahkan elemen ke tumpukan

Metode push digunakan untuk menambahkan elemen ke tumpukan. Sintaks umum dari pernyataan tersebut diberikan di bawah ini.

Stack.push(element)

Menghapus elemen dari tumpukan

Metode pop digunakan untuk menghapus elemen dari tumpukan. Operasi pop akan mengembalikan elemen paling atas dari tumpukan. Sintaks umum dari pernyataan tersebut diberikan di bawah ini

 Stack.pop()

Menghitung

Properti ini digunakan untuk mendapatkan jumlah item di Stack. Di bawah ini adalah sintaks umum dari pernyataan ini.

Stack.Count

Mengandung

Metode ini digunakan untuk melihat apakah suatu elemen ada di Stack. Di bawah ini adalah sintaks umum dari pernyataan ini. Pernyataan akan mengembalikan nilai benar jika elemennya ada, jika tidak maka akan mengembalikan nilai salah.

Stack.Contains(element)

Sekarang mari kita lihat ini berfungsi pada tingkat kode. Semua kode yang disebutkan di bawah ini akan ditulis ke kami Aplikasi konsol. Kode akan ditulis ke file Program.cs kami.

Dalam program di bawah ini, kita akan menulis kode untuk melihat bagaimana kita dapat menggunakan metode yang disebutkan di atas.

Contoh 1: Metode Stack.Push()

Dalam contoh ini, kita akan melihatnya

  • Bagaimana tumpukan dibuat.
  • Cara menampilkan elemen tumpukan, dan menggunakan metode Hitung dan Isi.

Tumpuk di C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   Stack st = new Stack();
   st.Push(1);
   st.Push(2);
   st.Push(3);

   foreach (Object obj in st)
   {
    Console.WriteLine(obj);
   }
    Console.WriteLine(); Console.WriteLine();
    Console.WriteLine("The number of elements in the stack " +st.Count);
    Console.WriteLine("Does the stack contain the elements 3 "+st.Contains(3));
    Console.ReadKey();
  }
 }
}

Code Penjelasan:-

  1. Langkah pertama digunakan untuk mendeklarasikan Stack. Di sini kita mendeklarasikan “st” sebagai variabel untuk menampung elemen tumpukan kita.
  2. Selanjutnya, kita menambahkan 3 elemen ke tumpukan kita. Setiap elemen ditambahkan melalui metode Push.
  3. Sekarang karena elemen tumpukan tidak dapat diakses melalui posisi indeks seperti daftar susunan, kita perlu menggunakan pendekatan berbeda untuk menampilkan elemen tumpukan. Objek (obj) adalah variabel sementara, yang dideklarasikan untuk menampung setiap elemen tumpukan. Kami kemudian menggunakan pernyataan foreach untuk menelusuri setiap elemen tumpukan. Untuk setiap elemen tumpukan, nilainya ditetapkan ke variabel obj. Kami kemudian menggunakan perintah Console.Writeline untuk menampilkan nilai ke konsol.
  4. Kami menggunakan properti Hitung (st.hitungan) untuk mendapatkan jumlah item dalam tumpukan. Properti ini akan mengembalikan nomor. Kami kemudian menampilkan nilai ini ke konsol.
  5. Kami kemudian menggunakan metode Berisi untuk melihat apakah nilai 3 ada di tumpukan kami. Ini akan mengembalikan nilai benar atau salah. Kami kemudian menampilkan nilai kembalian ini ke konsol.

Jika kode di atas dimasukkan dengan benar dan program dijalankan, output berikut akan ditampilkan.

Keluaran:

Tumpuk di C#

Dari output, kita dapat melihat bahwa elemen-elemen tumpukan ditampilkan. Selain itu, nilai True ditampilkan untuk menyatakan bahwa nilai 3 ditetapkan pada tumpukan.

Note: Anda telah memperhatikan bahwa elemen terakhir yang dimasukkan ke dalam tumpukan ditampilkan terlebih dahulu. Ini adalah elemen paling atas dari tumpukan. Jumlah elemen tumpukan juga ditampilkan dalam output.

Contoh 2: Metode Stack.Pop()

Sekarang mari kita lihat fungsi “hapus”. Kita akan melihat kode yang diperlukan untuk menghapus elemen paling atas dari tumpukan.

Tumpuk di C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   Stack st = new Stack();
   st.Push(1);
   st.Push(2);
   st.Push(3);
   
   st.Pop();

   foreach (Object obj in st)
   {
    Console.WriteLine(obj);
   }
    Console.ReadKey();
  }
 }
}

Code Penjelasan:-

  1. Disini kita hanya mengeluarkan metode pop yang digunakan untuk menghapus elemen dari tumpukan.

Jika kode di atas dimasukkan dengan benar dan program dijalankan, output berikut akan ditampilkan.

Keluaran:

Tumpuk di C#

Kita dapat melihat bahwa elemen 3 telah dihapus dari tumpukan.

Metode Stack Peek() C#

Metode Push dan Pop bekerja dengan elemen teratas tumpukan, tetapi terkadang Anda hanya perlu melihat elemen teratas tanpa menghapusnya. Metode Peek melakukan hal itu. Metode ini mengembalikan nilai teratas tumpukan tanpa mengubah koleksi, yang berguna ketika Anda ingin menguji item berikutnya sebelum memutuskan untuk menghapusnya.

Langkah 1) Buat tumpukan dan masukkan tiga elemen ke dalamnya, sehingga nilai 3 berada di atas.

Langkah 2) Panggil metode Peek untuk membaca elemen teratas, lalu periksa properti Count untuk memastikan tidak ada yang dihapus.

using System;
using System.Collections;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   Stack st = new Stack();
   st.Push(1);
   st.Push(2);
   st.Push(3);
   Console.WriteLine(st.Peek());
   Console.WriteLine(st.Count);
   Console.ReadKey();
  }
 }
}

Code Penjelasan:-

  1. Sebuah tumpukan bernama st dideklarasikan, dan nilai 1, 2, dan 3 ditambahkan dengan metode Push, sehingga 3 menjadi elemen teratas.
  2. Metode Peek mengembalikan elemen teratas tanpa menghapusnya, dan properti Count tetap melaporkan jumlah total item dalam tumpukan.

Saat program dijalankan, program akan mencetak nilainya. 3 dari Peek dan kemudian hitungannya 3, yang membuktikan elemen tersebut tetap berada di tumpukan. Jika tumpukan kosong, Peek akan melempar Invalid.OperationException, jadi aman untuk memeriksa Count sebelum memanggilnya.

Tumpukan Generik dalam C#

Contoh-contoh di atas menggunakan kelas Stack non-generik dari System.Collections, yang menyimpan setiap elemen sebagai objek. Kode C# modern biasanya lebih menyukai Stack generik. Kelas ini berasal dari namespace System.Collections.Generic. Kelas ini mengikat stack ke satu tipe yang dideklarasikan, sehingga compiler memeriksa setiap operasi Push dan Pop dan tidak memerlukan casting atau boxing.

Manfaat utama dari Stack generik tercantum di bawah ini.

  • Jenis keamanan: Tipe data ditetapkan saat deklarasi, sehingga hanya nilai dengan tipe tersebut yang dapat dimasukkan, dan kesalahan akan ditangkap pada saat kompilasi.
  • Tidak ada tinju: Tipe nilai seperti int disimpan secara langsung, yang menghindari biaya boxing yang dibayarkan oleh Stack non-generik.
  • Petugas kebersihan membaca: Pop dan Peek mengembalikan tipe yang dideklarasikan secara langsung, sehingga Anda tidak perlu melakukan casting kembali hasilnya dari objek.
using System;
using System.Collections.Generic;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   Stack<string> st = new Stack<string>();
   st.Push("Java");
   st.Push("Python");
   Console.WriteLine(st.Pop());
   Console.ReadKey();
  }
 }
}

Dalam contoh ini, stack dideklarasikan sebagai Stack. , jadi hanya menerima nilai string. Metode Pop mengembalikan string secara langsung dan mencetak Python, nilai terakhir yang dimasukkan. Untuk setiap proyek baru, Stack generik adalah pilihan yang direkomendasikan.

Perbedaan Antara Stack dan Queue di C#

Tumpukan dan sebuah antre Baik stack maupun queue sama-sama mengontrol urutan penghapusan elemen, tetapi menggunakan aturan yang berlawanan. Stack menggunakan prinsip last in, first out (masuk terakhir, keluar pertama), sedangkan queue menggunakan prinsip first in, first out (masuk pertama, keluar pertama). Memilih yang tepat akan membuat maksud kode Anda jelas bagi pengembang lain.

Perbedaan utamanya tercantum di bawah ini:

  • Order: Stack menghapus elemen yang paling baru ditambahkan terlebih dahulu (LIFO), sedangkan queue menghapus elemen terlama terlebih dahulu (FIFO).
  • metode: Stack menggunakan Push dan Pop, sedangkan queue menggunakan Enqueue untuk menambahkan dan Dequeue untuk menghapus.
  • Akses elemen teratas: Sebuah stack membaca item berikutnya dengan Peek, dan sebuah queue membaca item berikutnya dengan Peek from the front.
  • Kegunaan umum: Stack cocok untuk fitur undo, evaluasi ekspresi, dan rekursi. tracKing, sedangkan antrian cocok untuk penjadwalan, buffering, dan penelusuran breadth-first.

Kedua tipe tersebut tersedia dalam bentuk generik sebagai Stack. dan Antrian di System.Collections.Generic, sehingga Anda mendapatkan keamanan tipe dengan pilihan mana pun.

Pertanyaan Umum Demo Slot

Memanggil Pop atau Peek pada tumpukan kosong akan menghasilkan Invalid.OperationException. Periksa properti Count terlebih dahulu, atau gunakan metode Stack generik TryPop dan TryPeek, yang mengembalikan false alih-alih melempar exception ketika stack tidak berisi elemen apa pun.

Operasi Push dan Pop keduanya berjalan dalam waktu konstan O(1) karena hanya menyentuh bagian atas tumpukan. Ketika array internal perlu diperluas, operasi Push sesekali akan mengubah ukurannya, tetapi biaya rata-rata per operasi tetap konstan.

Tidak. Stack hanya menampilkan elemen teratasnya melalui Peek dan Pop, sehingga tidak memiliki pengakses indeks seperti list. Untuk membaca setiap nilai, lakukan enumerasi pada stack dengan perulangan foreach atau salin menggunakan metode ToArray.

Metode Clear menghapus semua elemen dari tumpukan dalam satu panggilan dan mengatur ulang Count menjadi nol. Untuk menghapus item satu per satu dari atas, panggil Pop dalam sebuah loop hingga Count mencapai nol.

Kelas Stack standar tidak aman untuk penulisan saat beberapa thread mengubahnya secara bersamaan. Untuk akses bersamaan, gunakan ConcurrentStack dari System.Collections.Concurrent, yang menawarkan metode TryPush dan TryPop atomik tanpa kunci eksternal.

Panggil metode ToArray untuk menyalin tumpukan ke dalam array baru, diurutkan dari atas ke bawah. Anda juga dapat meneruskan tumpukan ke konstruktor List untuk membangun daftar generik sambil tetap mempertahankanping urutan yang sama.

Ya. GitHub Copilot menulis deklarasi Stack, panggilan Push dan Pop, serta perulangan foreach dari komentar singkat atau nama metode. Seringkali ia menyarankan versi Stack generik, karena itu adalah koleksi yang direkomendasikan untuk kode C# baru.

Stack jarang menyimpan data pelatihan ML.NET, yang mengalir melalui koleksi bertipe dan pipeline IDataView. Namun, konsep stack LIFO muncul di dalam algoritma pembelajaran mesin untuk backend.tracraja, pencarian mendalam (depth-first search), dan pengelolaan panggilan metode rekursif.

Ringkaslah postingan ini dengan: