D. Struktur Data : Stack
- PENGERTIAN STACK
Stack, atau dikenal sebagai tumpukan dalam bahasa Indonesia, adalah struktur data linier yang menggunakan prinsip Last In First Out (LIFO), yang berarti elemen yang terakhir disisipkan akan menjadi elemen pertama yang keluar. Cara stack dalam menyimpan sebuah nilai yaitu jika ingin mengambil bagian paling bawah kita terlebih dahulu harus menyisihkan bagian bagian yang menumpuk diatasnya.
Dalam struktur data stack ada dua situasi yang perlu dihindari, yaitu underflow dan overflow.
a. Underflow, yaitu situasi di mana kita mencoba mendapatkan atau menghapus elemen data dari stack yang kosong.
b. Overflow, yaitu situasi di mana ruang memori yang dialokasikan untuk struktur data stack sudah penuh namun masih dilakukan operasi penyisipan elemen.
- KARAKTERISTIK STACK
1. Mengikuti prinsip operasi Last In First Out, yaitu elemen yang dimasukkan pertama akan muncul terakhir dan sebaliknya.
2. Penyisipan dan penghapusan terjadi di satu ujung yaitu dari atas tumpukan.
3. Apabila ruang memori yang dialokasikan untuk struktur data stack sudah penuh namun masih dilakukan operasi penyisipan elemen maka akan terjadi stack overflow.
4. Apabila struktur data tidak memiliki elemen data atau kosong, namun tetap dilakukan operasi penghapusan maka akan terjadi stack underflow
5. Stack diimplementasikan dengan struktur data array atau linked list.
- JENIS JENIS STACK
Struktur data stack dapat dibagi menjadi 2 jenis, yaitu: register stack dan memory stack.
1. Register Stack
Register stack merupakan stack yang hanya mampu menampung data dalam jumlah yang kecil. Karena ukuran unit memori register stack lebih kecil daripada memory stack, kedalaman maksimum register stack biasanya dibatasi.
2. Memory Stack
Pada Memory stack kedalaman nya cukup fleksibel dan mampu menangani dalam dalam skala yang lebih besar dibandingkan jenis sebelumnya.
- 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.
- Clear : digunakan untuk mengosongkan stack.
- IsEmpty : untuk memeriksa apakah stack sudah kosong.
- IsFull : untuk memeriksa apakah stack dalam keadaan penuh.
- FUNGSI STACK
1. Pengelolaan memori: Stack digunakan untuk menyimpan alamat memori dari suatu fungsi saat program dijalankan.
2. Pengecekan tata bahasa: Stack digunakan untuk menyimpan konteks dari suatu ekspresi matematika atau kondisi logika.
3. Algoritma backtracking: Stack digunakan untuk menyimpan state dari suatu proses yang dapat dikembalikan ke state sebelumnya jika proses tersebut gagal.
4. Algoritma pengurutan: Stack digunakan dalam beberapa algoritma sorting seperti quicksort dan mergesort.
5. Pemecahan masalah rekursif: Stack dapat digunakan dalam pemecahan masalah rekursif karena setiap panggilan rekursif akan ditambahkan ke stack dan setiap pengembalian dari rekursif akan dihapus dari stack.
6. Evaluasi ekspresi: Stack digunakan dalam evaluasi ekspresi aritmatika dan logika.
7. Undo-Redo : Stack digunakan dalam menyimpan state untuk undo dan redo.
- KELEBIHAN STACK
Beberapa kelebihan dari struktur data stack adalah:
- Implementasi yang mudah: Stack dapat diimplementasikan dengan menggunakan array, linked list, dan pointer, sehingga mudah diintegrasikan dalam berbagai aplikasi.
- Penyimpanan data yang aman : stack dapat digunakan untuk menyimpan data yang sensitif dengan memanfaatkan enkripsi atau teknik keamanan lainnya.
- Penanganan masalah rekursif: Stack dapat digunakan dalam pemecahan masalah rekursif karena setiap panggilan rekursif akan ditambahkan ke stack dan setiap pengembalian dari rekursif akan dihapus dari stack.
- Memiliki kapasitas terbatas: Stack memiliki kapasitas yang terbatas dan tidak dapat menambah elemen jika sudah penuh, sehingga mengurangi risiko overflow.
- Simpel: Stack hanya memiliki operasi dasar yang digunakan seperti push, pop dan peek, sehingga mudah dipahami dan digunakan.
- KEKURANGAN STACK
Selain kelebihan di atas, stack juga terdapat beberapa kelemahan, diantaranya:
- Kapasitas terbatas: Stack memiliki kapasitas yang terbatas dan tidak dapat menambah elemen jika sudah penuh, sehingga dapat menyebabkan overflow jika tidak dikelola dengan baik.
- Akses terbatas: Hanya elemen yang berada di atas elemen teratas yang dapat diakses. Elemen yang berada di bawah elemen teratas tidak dapat diakses tanpa menghapus elemen di atasnya.
- Akses data yang lambat: jika kita ingin mengakses data yang berada di bawah elemen teratas, maka kita harus menghapus semua elemen di atasnya terlebih dahulu.
- Kekurangan dalam penyimpanan data: Stack hanya dapat menyimpan data sementara dan tidak cocok untuk menyimpan data permanen.
- Overflow dan Underflow: Stack dapat mengalami overflow jika terus menerus menambah elemen tanpa cukup kapasitas, dan mengalami underflow jika terus menerus menghapus elemen tanpa elemen yang tersisa.


Komentar
Posting Komentar