STACK ( TUMPUKAN )
stack atau tumpukan merupakan salah satu teknik dalam struktur data yang
cukup mudah dipahami. Biasanya kita akan menjumpai topik ini pada awal materi
setelah array karena array dibutuhkan dalam
implementasi stack. Beberapa macam struktur data lain memiliki algoritma
yang lebih rumit bila dibandingkan dengan stack. Pembahasan
sederhana tentang stack akan saya rangkum menjadi beberapa
poin agar lebih rapi dan mudah dipahami.
Stack secara umum
Sewaktu belajar stack, saya selalu menganalogikan dengan
sebuah kotak yang akan diisi oleh beberapa barang. Karakteristik penting stack adalah
bersifat LIFO (Last In First Out) artinya data
yang terakhir masuk merupakan data yang akan keluar terlebih dahulu. Saya
yakin teman-teman dapat menyimpulkan maksudnya. Kita asumsikan saja misalnya
saya memasukkan data alfabet secara urut dari a sampai e (a-b-c-d-e). Kemudian
saya ingin mengeluarkan alfabet b, maka saya harus mengeluarkan alfabet e, d
dan c secara berurut hingga akhirnya saya dapat mengakses b. Sangat sederhana.
Masih bingung? Mari kita sederhanakan lagi dengan contoh yang tadi.
Kasusnya, saya mempunyai buku-buku pelajaran yang terdiri dari buku
Matematika, Fisika, Biologi, Kimia dan Bahasa Indonesia. Untuk menghemat ruang,
kemudian saya menyimpan buku-buku tersebut ke dalam kotak yang saya miliki.
Saya memasukkan buku dengan urutan sebagai berikut:
1. Fisika,
2. Kimia,
3. Matematika,
4. Bahasa Indonesia,
5. Biologi.
Karena besok jadwalnya Matematika dan saya harus belajar, maka untuk
mengambil buku Matematika saya harus mengeluarkan dulu buku Biologi dan Bahasa
Indonesia. Sehingga buku Matematika dapat saya ambil dan yang tersisa pada
kotak saat ini adalah buku Fisika dan Kimia.
Penggunaan Stack
Pada beberapa literatur
menyebutkan bahwa stack umumnya digunakan untuk memisahkan
ekspresi aritmatika. Saya pernah mendapat tugas mengubah notasi infix menjadi postfix menggunakan
teknik stack. Teman-teman dapat membaca referensi infix-postfix
yang menurut saya lengkap dan mudah dipahami disini.
Algoritma Stack
Dengan memahami contoh yang
telah dibahas pada poin sebelumnya, saya pikir cara kerja stack sudah
dapat dibayangkan. Sederhananya seperti ini: ketika memasukkan data, uji
apakah stack (array) sudah penuh? Jika benar, maka data
tidak dapat disimpan. Jika tidak, maka data akan disimpan dan menjadi data yang
paling atas dari data sebelumnya. Kemudian bagaimana dengan langkah
mengeluarkan data? Sama. Uji apakah stack kosong? Jika benar,
maka proses selesai karena tidak ada data yang harus dikeluarkan. Sebaliknya,
maka ambil data yang paling akhir (atas) untuk dikeluarkan.
Metode
pada Implementasi Stack
Ada lima metode penting dalam implementasi stack. Potongan
kode berikut saya tulis menggunakan bahasa Java.
push(), berfungsi untuk memasukkan data.
public void push(String value) {
stack[++top] = value;
}
pop(), berfungsi untuk mengeluarkan data terakhir (atas).
public String pop() {
return stack[top — ];
}
peek(), berfungsi untuk melihat data yang berada pada tumpukan paling atas
(akan dikeluarkan).
public String peek() {
return stack[top];
}
isEmpty(), berfungsi untuk menguji apakah stack masih kosong.
public boolean isEmpty() {
return top == -1;
}
isFull(), berfungsi untuk menguji apakah stack telah penuh.
public boolean isFull() {
return top == max-1;
}
👍🏽
BalasHapus