Section Artikel
Apa itu Stack?
Stack merupakan suatu order list yang dalam pemrosesannya pengambilan dan penambahan elemen hanya dilakukan pada satu ujung.
Jika queue menggunakan prinsip FIFO (First In Firs Out) beda halnya dengan stack, stack menggunakan prinsip LIFO (Last In Fist Out) dimana elemen atau data yang terakhir disisipkan menjadi elemen yang paling dulu diambil, stack juga disebut pushdown list.
Untuk lebih mudahnya umpamakan kita menumpuk suatu buku, buku yang terakhir di tumpuk akan menjadi buku pertama untuk diambil karena berada dibagian paling atas tumpukan, untuk memindahkan sebuah elemen dari tempat atas tersebut dalam sebuah stack, maka dilakukan operasi pop seperti pada gambar dibawah ini.

Fungsi dalam Stack
- Fungsi init : fungsi ini digunakan untuk menginisialisasi atau membuat stack baru yang belum terisi atau masih kosong.
- Fungsi full : fungsi untuk mengetahui apakah stack dalam keadaan penuh.
- Fungsi empty : digunakan untuk mengetahui apakah stack dalam keadaan kosong atau telah terisi
- Fungsi clear : digunakan untuk mengosongkan stack dimana stack dianggap kosong apabila puncak stack berada pada posisi -1.
- Fungsi push : digunakan untuk menambahkan data ke dalam stack yang dalam penambahanya data tidak dapat ditambahkan jika stack dalam keadaan full (penuh)
- Fungsi pop : digunakan untuk mengambil data teratas stack dengan syarat bahwa stack dalam keadaan tidak kosong.
Operasi pada stack
- Push : Untuk menambahkan elemen atau data, dimana data paling akhir akan diletakkan di paling atas
- Pop : untuk mengambil atau mengeluarkan data dimana data yang diambil adalah data terakhir atau paling atas.
- Clear : digunakan untuk mengosongkan stack
- IsEmpty : untuk memeriksa apakah stack sudah kosong
- IsFull : untuk memeriksa apakah stack dalam keadaan penuh
Implementasi Stack dengan Array menggunakan bahasa Java
public class StackArr implements Stack { T value[] ; int topOfStack ; public boolean isEmpty(){…} public T pop(){…} public void push(T item){…} public T peek(){…} public int size() {…} }
Stack dengan Linked List
Linked List merupakan sekumpulan elemen atau data dengan tipe yang sama, mempunyai keterurutan tertentu, yang setiap elemennya terdiri dari dua bagian.
Selain dapat diimplemtasikan dengan array, stack juga dapat diimplementasikan dengan single linked list dimana dengan menggunakan linked list dapat menghemat dalam pengalokasian memori yang dinamis.
Perbandingan Stack dengan Linked List dan Stack dengan Array
ARRAY | LINKED LIST |
Array bersifat Statis, jumlah memori yang telah dipesan tidak dapat diubah lagi | Linked list bersifat Dinamis, jumlah memori dapat diubah |
Penambahan / penghapusan data terbatas | Penambahan / penghapusan data tidak terbatas |
Random access | Sequential access |
Array tidak dapat dihapus | Linked list dapat dihapus dengann mudah |