Selasa, 26 Januari 2016

STACK

STACK

Stack (tumpukan) sebenarnya dapat diartikan sebagai urutan dimana penambahan dan pengambilan elemen hanya dilakukan pada satu sisi yang disebut top (puncak) dari stack.

Top adalah suatu variabel penanda dalam stack yang menunjukkan elemen teratas stack sekarang. Top Of Stack akan selalu bergerak hingga mencapai Max Of Stack sehingga menyebabkan stack penuh.

Dengan melihat definisi tersebut maka jelas bahwa pada stack berlaku aturan LIFO (Last In First Out), yaitu Konsep utamanyanya adalah benda yang terakhir masuk dalam stack akan menjadi benda pertama yang dikeluarkan dari stack.

Salah satu analogi yang menjelaskan ilustrasi mengenai stack ini adalah tumpukan piring atau kaset CD dll. Pada saat kita hendak menumpuk piring-piring tersebut tentulah yang kita lakukan adalah meletakkan piring pertama pada tempatnya, selanjutnya meletakkan piring kedua di atas piring pertama dan demikian seterusnya. Kemudian ketika hendak mengambil satu piring dari tumpukan tersebut, tentu yang diambil adalah piring teratas (yang terakhir kali diletakkan), bukan yang terbawah (yang pertama kali diletakkan).

·         OPERASI PADA STACK dengan ARRAY

Operasi – operasi yang dapat diterapkan adalah sebagai berikut :
1.  IsFull : adalah untuk memeriksa apakah stack sudah penuh? Dengan cara memeriksa top of stack, jika sudah sama dengan MAX_STACK-1 maka full, jika belum (masih lebih kecil dari MAX_STACK-1) maka belum full.
      Ilustrasi :

2.      IsEmpty : Untuk memeriksa apakah stack masih kosong? Dengan cara memeriksa top of stack, jika masih -1 maka berarti stack masih kosong.

3.      Push : Untuk memasukkan elemen ke stack, selalu menjadi elemen teratas stack. Dengan cara tambah satu (increment) nilai top of stack terlebih dahulu setiap kali ada penambahan elemen stack, asalkan stack masih belum penuh, kemudian isikan nilai baru ke stack berdasarkan indeks top of stack setelah ditambah satu (di increment).
Ilustrasinya:



4.   Pop : digunakan untuk mengambil item pada Stack pada Tumpukan paling atas. Berkebalikan dengan Push, Pop terlebih dulu menghapus (decrement) nilai yang diinganan.
Ilustrasi :




5.  Print : Untuk menampilkan semua elemen-elemen stack. Dengan cara looping semua nilai array secara terbalik, karena kita harus mengakses dari indeks array tertinggi terlebih dahulu baru ke indeks yang kecil. Jika kita ingin mengeprint elemen stack, kita harus membaca elemen array dari indeks yang ada isinya tertinggi, yaitu dari Top downto 0. Sehingga kita akan menampilkan elemen: Fairy Tail, Dragon Ball Super, Slam Dunk!, Kuroko No Basuke.