Definisi Stack atau Tumpukan
Stack (tumpukan) secara mudah dapat diartikan sebagai list (urutan) dimana penambahan dan pengambilan elemen hanya dilakukan pada satu sisi yang disebut top (puncak) dari stack.
Dengan melihat definisi tersebut maka jelas bahwa pada stack berlaku aturan LIFO (Last In First Out), yaitu elemen yang terakhir masuk akan pertama kali diambil atau dilayani. Salah satu analogi yang dapat dikemukakan di sini adalah tumpukan piring atau barang lain. Pada saat kita hendak menumpuk piring-piring tersebut tentulah yang kita lakukan adalah meletakkan piring pertama pada tempatnya, selsnjutnya meletakkan piring kedua di atas piring pertama dan demikian seterusnya. Pada saat kita hendak mengambil satu piring dari tumpukan tersebut, tentu yang diambil adalah piring teratas (yang terakhir kali ditaruh), bukan yang terbawah (yang pertama kali diletakkan).
Ada dua operasi dasar pada stack adalah PUSH (operasi pemasukan elemen ke dalam stack) dan POP (operasi pengambilan satu elemen dari dalam stack). Di bawah ini diberikan contoh pemakaian operasi PUSH dan POP dan isi stack untuk setiap selesai eksekusi satu operasi.
Untuk mempermudah penulisan, di bawah ini isi stack tidak dituliskan secara bertumpuk, tetapi dengan kesepakatan:
Elemen paling kanan adalah elemen yang ada pada TOS (Top Of the Stack)
Stack yang dipakai bernama S
PUSH(S,B) berarti memasukkan elemen B ke dalam stack S
POP(B,S) berarti mengambil elemen dari stack S dan menaruhnya ke dalam variabel B
Jenis operasi Stack
Push
Operasi Push merupakan proses operasi ketika kita ingin memasukkan sebuah elemen atau item ke dalam Stack.
Pop
Operasi Pop dilakukan untuk menghapus sebuah elemen atau item dalam Stack.
Peek
Operasi Peek dilakukan untuk memungkinkan pengguna dapat melihat elemen di atas Stack dengan catatan tidak ada modifikasi apa pun dalam operasi ini.
Int IsFull
Operasi ini dilakukan untuk mengetahui apakah Stack sedang penuh atau tidak.
Int IsEmpty
Operasi ini dilakukan untuk mengetahui apakah Stack sedang kosong atau tidak.
Int size
Operasi ini dilakukan untuk mengembalikan ukuran Stack atau jumlah total elemen yang ada dalam Stack tersebut.
Int top
Operasi ini dilakukan untuk mengembalikan elemen terakhir yang dimasukkan di atas elemen lain tanpa menghapusnya.
Jenis-jenis Stack
Berdasarkan kemampuan menyimpan data, struktur data stack dapat dibagi menjadi 2 jenis, yaitu: register stack dan memory stack.
Register Stack
stack yang hanya mampu menampung data dalam jumlah yang kecil. Kedalaman maksimum pada register stack cenderung dibatasi karena ukuran unit memorinya sangat kecil dibandingkan dengan memory stack.
Memory Stack
kedalaman dari stack cukup fleksibel dan mampu menangani dalam dalam skala yang lebih besar dibandingkan jenis sebelumnya.
Karakteristik Stack
Struktur data stack memiliki ciri sebagai berikut:
Stack digunakan pada banyak algoritma yang berbeda seperti Tower of Hanoi, Tree traversal, rekursi dll.
Stack diimplementasikan dengan struktur data array atau linked list.
Mengikuti prinsip operasi Last In First Out, yaitu elemen yang dimasukkan pertama akan muncul terakhir dan sebaliknya.
Penyisipan dan penghapusan terjadi di satu ujung yaitu dari atas tumpukan.
Apabila ruang memori yang dialokasikan untuk struktur data stack sudah penuh namun masih dilakukan operasi penyisipan elemen maka akan terjadi stack overflow.
Apabila struktur data tidak memiliki elemen data atau kosong, namun tetap dilakukan operasi penghapusan maka akan terjadi stack underflow.
Operasi-operasi pada Stack
Ada beberapa operasi dasar yang bisa kita untuk lakukan terhadap struktur data stack. Operasi-operasi tersebut meliputi:
Push: Menyisipkan elemen ke bagian atas stack
Pop: Menghapus elemen atas dari stack
IsEmpty: Memeriksa apakah stack kosong
IsFull: Memerika apakah stack sudah penuh
Peek: Mendapatkan nilai elemen teratas tanpa menghapusnya
Fungsi dan kegunaan Stack
Berikut adalah fungsi-fungsi dari struktur data Stack:
Struktur data stack digunakan dalam evaluasi dan konversi ekspresi aritmatika.
Stack digunakan dalam pemrograman rekursi.
Digunakan untuk pemeriksaan tanda kurung.
Stack digunakan dalam manajemen memori.
Dipakai untuk memproses pemanggilan sebuah fungsi.
Salah satu contoh penerapan struktur data stack adalah fitur tombol back pada browser. Dimana browser akan menyimpan semua URL yang telah kita kunjungi sebelumnya dalam stack.
Setiap kali kita mengunjungi halaman baru, halaman itu ditambahkan di atas stack. Saat kita menekan tombol kembali, URL saat ini dihapus dari tumpukan, dan URL sebelumnya diakses.
Flowchart dari struktur data Stack
Dibawah ini adalah contoh Flowchart dari struktur data Stack:
Comments
Post a Comment