Struktur Data Stack: Pengertian, Jenis dan Contoh
Struktur Data Stack: Pengertian, Jenis dan Contoh
Struktur data merupakan cara untuk menyimpan dan mengorganisir data dalam sebuah program komputer. Tujuannya adalah agar dapat diakses dan diproses dengan lebih efisien. Struktur data yang umum digunakan adalah berbentuk stack.
Struktur data stack merupakan struktur data linear yang bekerja berdasarkan prinsip LIFO (Last In First Out), yaitu data yang terakhir dimasukkan ke dalam stack akan menjadi data yang pertama kali diambil atau dikeluarkan dari tumpukan.
Artikel ini membahas tentang apa itu struktur data stack, sekaligus memberikan uraian tentang jenis dan contohnya.
Pengertian
Struktur data stack merupakan salah satu jenis struktur data pada komputer yang berguna untuk menyimpan dan mengorganisir data dalam urutan-urutan tertentu. Dengan menggunakan konsep LIFO, struktur data stack akan pertama kali mengambil data yang terakhir kali dimasukkan ke dalam stack.
Jika dibayangkan, stack ini seperti sebuah tumpukan buku yang diletakkan dengan urutan atas ke bawah. Buku yang paling atas dan mudah diambil adalah buku yang akan diambil terlebih dahulu.
Dalam istilah pemrograman, usaha untuk menambahkan elemen pada sebuah struktur data stack disebut sebagai push. Adapun proses menghapus atau menghilangkan elemen data dari stack disebut sebagai pop.
Stack sering dipakai dalam implementasi algoritma dan fungsi yang bersifat matematis serta konversi infix ke postfix. Selain itu, stack juga bisa dipakai dalam aplikasi yang membutuhkan manajemen tumpukan data seperti halnya pengembanga OS, kompilator, dan software grafis.
Jenis-jenis Struktur Data Stack
1. Stack Diimplementasikan dengan Array
Jenis pertama ini merupakan metode yang paling sederhana. Sebuah data disimpan dalam sebuah array dengan akses ke data yang terakhir dimasukkan ke stack. Keuntungan dari implementasi ini yaitu sederhana dan mudah dipahami. Namun kelemahannya yaitu kapasitas stack yang dibatasi oleh ukuran array.
2. Stack Diimplementasikan dengan Linked
Kedua, implementasi stack dengan menggunakan linked list dapat menambah atau mengurangi data dalam stack tanpa terbatas oleh ukuran tertentu. Keuntungannya adalah tidak ada batasan kapasitas dan dapat diatur sesuai kebutuhan, sementara kelemahannya yaitu kompleksitas implementasinya lebih tinggi daripada implementasi stack dengan array.
3. Double-Ended Stack
Double-Ended stack dapat membuat operasi push dan pop dilakukan pada kedua ujung depan dan belakang stack. Keuntungannya adalah memungkinkan akses data dari kedua ujung stack, sehingga menjadi lebih fleksibel, sementara kelemahannya yaitu kompleksitas implementasi yang lebih tinggi dibanding dengan implementasi stack biasa.
4. Circular Stack
Jenis stack yang kedua adalah stack yang berbentuk sirkuler. Sirkular stack umumnya diimplementasikan dengan menggunakan array. Keuntungan dari circular stack adalah memori yang tidak boros dan lebih efisien. Sementara kelemahannya adalah penerapan yang lebih kompleks.
5. Dynamic Stack
Dynamic stack merupakan stack yang dapat disesuaikan ukurannya selama program berjalan. Implementasi stack ini biasanya menggunakan linked list. Keuntungan dari implementasi dynamic stack adalah ukuran stack yang dapat disesuaikan dengan kebutuhan, sementara kelemahannya adalah terlalu kompleks.
6. Undo-Redo Stack
Undo Redo stack adalah stack yang dipakai untuk melakukan operasi undo dan redo pada sebuah aplikasi. Implementasinya menggunakan linked list. Keuntungannya adalah memungkinkan untuk mengembalikan perubahan yang sudah dilakukan dengan cepat, sementara kelemahannya adalah kompleksitas implementasinya yang tinggi.
Contoh Implementasi
1. Implementasi Stack Array
Implementasi stack yang pertama adalah array. Implementasi ini salah satu metode yang paling umum digunakan. Berikut ini adalah contohnya dalam bahasa python:
2. Implementasi Stack dengan Linked List
Implementasi stack dengan linked list juga sering dipakai karena memiliki kelebihan di dalam penyimpanan dengan kapasitas yang lebih fleksibel. Berikut ini adalah contoh implementasi stack dengan linked list dalam bahasa Java:






