STRUKTUR DATA
TOPIC: STACK
REINHARD KOMANSILAN, M.KOM
POKOK BAHASAN
1. Apa Itu Stack?
2. Kelebihan dan Kekurangan Menggunakan Stack
3. Jenis-Jenis Operasi Stack
4. Aplikasi Stack
5. Implementasi Stack
APA ITU STACK?
• Dilansir dari TechTerms, stack adalah salah satu struktur
data yang digunakan untuk menyimpan sekumpulan
objek ataupun variabel.
• Sesuai namanya yaitu stack, tidak heran apabila objek
yang terkumpul terlihat seperti tumpukan.
• karakteristik stack sendiri bersifat LIFO (last in first out).
Artinya, data yang terakhir masuk merupakan data yang
akan keluar terlebih dahulu.
• Seperti halnya tumpukan pada umumnya, misalnya
tumpukan buku, yang di atas atau yang terakhir masuk
harus dikeluarkan terlebih dahulu untuk mendapatkan
buku yang berada di tumpukan bawah.
• Sebagai contoh, kamu mempunyai empat buku, yaitu
buku matematika, fisika, biologi, dan kimia. Buku
matematika kamu masukkan terlebih dahulu, lalu buku
selanjutnya fisika, biologi, dan kimia.
• Nah, untuk mendapatkan buku fisika, kamu harus
mengeluarkan buku kimia dan biologi terlebih dahulu,
karena kedua buku tersebut tergolong buku yang terakhir
masuk.
CONTOH:
https://www.mathsisfun.com/games/towerofhanoi.htm
l
• Analogi di atas seperti halnya stack yang memiliki sifat
LIFO. Data terakhir yang masuk harus keluar terlebih
dahulu.
• Konsep ini pada umumnya digunakan dalam
pemrograman dan mengorganisir penyimpanan komputer
KELEBIHAN DAN KEKURANGAN MENGGUNAKAN
STACK
1. Kelebihan
• membantu mengelola data dengan metode LIFO
• secara otomatis membersihkan objek
• tidak mudah rusak
• ukuran variabel tidak dapat diubah
• mengontrol memori secara mandiri
2. Kekurangan
• memori stack sangat terbatas
• ada kemungkinan stack akan meluap atau overflow jika
terlalu banyak objek
• tidak memungkinkan akses acak, karena harus
mengeluarkan tumpukan paling atas terlebih dahulu
untuk mengakses tumpukan paling bawah
JENIS-JENIS OPERASI STACK
APLIKASI STACK
1. SINGLE
STACK
diatas diilustrasikan ada sebuah indeks array yang masih kosong pada awal
pembuatan stack dimana n[10], variabel Top berada pada -1 yang menunjukkan
indeks masih dalam keadaan kosong
Di atas adalah keadaan ketika stack sudah diisi data. Pada kondisi ini data pertama
yang diinputkan adalah S[0]=11, data kedua S[1]=7, data ketiga S[2]=15, data
keempat S[23]=23.
Kondisi Top sudah berubah menjadi data yang terakhir diinputkan (data keempat)
sehingga Top[3] X=23.
Variabel Top digunakan sebagai indeks untuk menunjuk nomor elemen
array yang berisi nilai stack yang berada paling kanan atau Top, yang
ditunjukan dengan angka 3.
Variabel X bertipe integer digunakan sebagai perantara, dimana data yang
akan disimpan kedalam stack harus berasal dari X.
Demikian juga data yang baru diambil dari dalam stack harus diterima
terlebih dahulu oleh variabel X, kemudian baru diberikan ke variabel lain
untuk diolah.
Oleh karena itu, jika ada instruksi PUSH, maka data baru (yang diambil
dari isi variabel X) akan disimpan dalam elemen S[4] sehingga indeks
Top harus diarahkan ke posisi no. 4.
Artinya, Top maju terlebih dahulu satu langkah ke S[4], kemudian baru
mengisi nilai pada S[4].
Sedangkan jika ada instruksi Pop, maka yang akan diambil adalah isi
dari S[3] dan datanya akan disimpan terlebih dahulu dalam variabel X,
kemudian indeks Top menjadi mundur satu langkah sehingga akan
menunjuk S[2].
2. DOUBLE STACK
Pada gambar 4.4 diatas adalah ilustrasi indeks array pada double stack. Pada stack1 kondisi
data pertama yang diinputkan adalah S[0], data kedua S[1], data ketiga S[2] dan Top1=data
input terakhir S[2]. Sedangkan pada stack2 data pertama adalah S[9], data kedua S[8], data
ketiga S[7], data keempat S[6] dan Top2=data input terakhir S[6].
Operasi Dasar Pada Double Stack
IMPLEMENTASI STACK
Sekarang kita sudah tahu pengertian dari stack serta
kelebihan dan kekurangan dalam menggunakannya.
Lalu, seperti apa sih implementasinya?
STACK dapat dengan mudah diimplementasikan
dengan menggunakan array atau linked list.
ARRAY
Array adalah salah satu implementasi dari stack yang paling sederhana dan
menawarkan akses acak ke pengguna berdasarkan indeks.
dalam implementasi stack menggunakan array, programmer dapat menggunakan
bahasa pemrograman seperti C, C++, Java, Phyton, dan C#.
Kelebihan dari implementasi stack menggunakan array adalah mudah untuk
diimpelementasikan.
Sementara itu, kekurangannya adalah bisa dibilang tidak terlalu dinamis. Pasalnya,
hal itu tidak tumbuh dan menyusut, tergantung pada kebutuhan saat proses.
LINKED LIST
Sama halnya array, linked list juga mudah dalam mengimplementasikan stack.
Seperti yang sudah dijelaskan sebelumnya, operasi dasar dari stack adalah menambahkan data (push)
dan menghapus data (pop).
Dengan menggunakan linked list, operasi push bisa diganti dengan metode addAtFront dan operasi
pop bisa diganti dengan fungsi yang menghapus node depan dari linked list.
Masih sama seperti array, linked list juga dapat digunakan bahasa pemrograman seperti C, C++, Java,
Phyton, dan C#.
Kelebihan dari implementasi stack menggunakan linked list adalah dapat bertambah dan berkurang
sesuai dengan kebutuhan saat runtime.
Sementara kekurangannya adalah harus membutuhkan memori ekstra karena ada pointer di dalamnya.
CONTOH MENGGUNAKAN ARRAY
TERIMA KASIH
• DEMO PROGRAM 1 & 2