Tuesday, May 27, 2014

Collection stack dalam bahasa pemograman C#

Pada posting sebelumnya, saya telah menjelaskan tentang data collection list dan queue. Pada artikel kali ini saya akan membahas data collection selanjutnya yaitu stack. Stack jika diartikan kedalam bahasa Indonesia berarti tumpukan. Sesuai dengan artinya prinsip kerja dari data collection stack adalah sama seperti tumpukan, dimana data yang terakhir dimasukan akan di proses di proses lebih awal.


Contoh dalam kehidupan sehari-hari adalah, misalkan kita mempunya lima buah buku, buku pertama disimpan paling bawah, buku kedua disimpan di atas buku pertama, buku ketiga disimpan di atas buku kedua, begitu seterusnya sampai tumpukan buku terakhir yaitu buku kelima. Jika kita menggunakan prinsip tumpukan (stack), buku yang akan kita baca terlebih dahulu adalah buku ke lima, kemudain jika kita telah selesai membaca buku kelima, selanjutnya kita membaca buku yang ke empat, dan begitu seterusnya sampai buku pertama.

Supaya lebih jelas, mari kita perhatikan contoh program berikut ini :

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

namespace ContohStack
{
    class Program
    {
        static void Main(string[] args)
        {
            Stack<int> myStack = new Stack<int>();

            //Memasukan elemen myStack
            myStack.Push(2);
            myStack.Push(5);
            myStack.Push(8);
            myStack.Push(4);
            myStack.Push(1);

            //Menampilkan isi myStack
            foreach (int i in myStack)
            {
                Console.WriteLine("{0}", i);
            }
            Console.WriteLine();

            //Mengambil nilai myStack
            myStack.Pop();

            //Menampilkan isi myStack setelah proses pengambilan
            foreach (int i in myStack)
            {
                Console.WriteLine("{0}", i);
            }
            Console.WriteLine();

            //Menghapus seluruh isi myStack
            myStack.Clear();

            //Mengecek apakah isi stack adalah kosong
            if (myStack.Count == 0)
            {
                Console.WriteLine("myStack kosong");
            }
            else
            {
                foreach (int i in myStack)
                {
                    Console.WriteLine("{0}", i);
                }
                Console.WriteLine();
            }
        }
    }
}
Jika dijalankan hasilnya adalah sebagai berikut :


Pada program di atas, terdapat tiga buah method yaitu Push(), Pop(), dan Clear().
Push() berfungsi untuk memasukan nilai kedalam stack
Pop() berfungsi untuk mengambil nilai stack sesuai dengan prinsip kerja stack.
Clear() berfungsi untuk menghapus seluruh isi / nilai stack.

sama seperti collection queue, method pop juga mengembalian sebuah nilai dari stack. untuk membuktikan hal ini, coba perhatikan contoh program berikut :

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

namespace ContohStack
{
    class Program
    {
        static void Main(string[] args)
        {
            Stack myStack = new Stack();

            int dataOut;

            //Memasukan elemen myStack
            myStack.Push(2);
            myStack.Push(5);
            myStack.Push(8);
            myStack.Push(4);
            myStack.Push(1);

            //Menampilkan isi myStack
            foreach (int i in myStack)
            {
                Console.WriteLine("{0}", i);
            }
            Console.WriteLine();

            //Mengambil nilai myStack
            dataOut = myStack.Pop();

            //Menampilkan isi myStack setelah proses pengambilan
            foreach (int i in myStack)
            {
                Console.WriteLine("{0}", i);
            }
            Console.WriteLine();

            //Menampilkan nilai kembalian Pop
            Console.WriteLine("Data yang di ambil : {0}", dataOut);
        }
    }
}
Hasilnya adalah sebagai berikut :