Pengertian Struktur Data Stack
Struktur data stack adalah salah satu jenis struktur data yang digunakan dalam pemrograman. Stack adalah tumpukan data yang mengikuti aturan LIFO (Last In, First Out), yang berarti elemen terakhir yang dimasukkan ke dalam stack akan menjadi elemen pertama yang dihapus dari stack.
Dalam stack, operasi penambahan elemen disebut “push”, sedangkan operasi penghapusan elemen disebut “pop”. Stack biasanya digunakan dalam situasi di mana kita perlu mengatur data dalam urutan terbalik dari urutan masuknya data.
Jenis-Jenis Struktur Data Stack
Terdapat beberapa jenis stack yang sering digunakan dalam pemrograman:
- Stack yang Diimplementasikan Menggunakan Array (Array-based Stack)
Setiap elemen stack disimpan dalam sel-sel array yang saling berdekatan. Operasi push (menambahkan elemen) dan pop (menghapus elemen) dapat dilakukan dengan mudah dengan mengubah indeks array yang sesuai. - Stack yang Diimplementasikan Menggunakan Linked List (Linked List-based Stack)
Setiap simpul memiliki dua bagian: data elemen dan tautan ke simpul berikutnya. Linked list memungkinkan penambahan dan penghapusan elemen dengan efisien, membuat implementasi stack lebih fleksibel. - Double-Ended Stack
Jenis ini dikenal sebagai “deque” (double-ended queue), memungkinkan penambahan dan penghapusan elemen baik di bagian depan maupun belakang stack. Ini berguna dalam skenario di mana kita perlu mengakses elemen-elemen di kedua ujung stack. - Circular Stack
Memiliki elemen-elemen yang diatur dalam bentuk lingkaran. Ketika elemen terakhir diikuti oleh elemen pertama, maka stack dikatakan sebagai circular stack. Ini berguna dalam situasi di mana kita ingin memanfaatkan ruang yang ada dengan lebih efisien. - Dynamic Stack
Memungkinkan ukuran stack untuk berubah secara dinamis saat elemen ditambahkan atau dihapus. Implementasi ini menghindari batasan ukuran yang tetap dan dapat mengatur alokasi memori secara lebih efisien - Undo-Redo Stack
Digunakan dalam aplikasi yang memungkinkan pengguna untuk mengembalikan langkah-langkah sebelumnya (undo) atau mengulangi langkah yang telah dibatalkan (redo). Implementasi stack membantu dalam mengelola riwayat perubahan.
Ciri-Ciri Struktur Data Stack
- LIFO (Last-In-First-Out): Elemen terakhir yang dimasukkan adalah yang pertama kali dihapus.
- Push dan Pop: Operasi utama adalah menambahkan elemen (push) dan menghapus elemen (pop).
- Top: Elemen teratas dari stack dapat diakses tanpa menghapusnya.
- Batasan Kapasitas: Beberapa implementasi stack memiliki batasan ukuran, sementara yang lain bersifat dinamis.
Contoh Stack dalam Bahasa Python
Berikut adalah contoh sederhana implementasi stack dalam bahasa pemrograman Python:
class Stack:
def __init__(self):
self.items = []
def push(self, item):
self.items.append(item)
def pop(self):
if not self.is_empty():
return self.items.pop()
def peek(self):
if not self.is_empty():
return self.items[-1]
def is_empty(self):
return len(self.items) == 0
def size(self):
return len(self.items)
# Contoh penggunaan stack
stack = Stack()
stack.push(10)
stack.push(20)
stack.push(30)
print("Top elemen:", stack.peek()) # Output: 30
print("Ukuran stack:", stack.size()) # Output: 3