STRUKTUR DATA - " Stack, Recursion, Queue"
Assalamualaikum
Wr.Wb
Hai teman teman
kali ini saya akan membahas apa itu Stack, Recursion dan Queues. Mungkin ada
yang bertanyaapa bedanya Stack, Recursion dan Queues ?. oke kita akan bahas semua tapi kita bahasnya
satuper satu ya
STACK
Stack adalah kumpulan data yang diletakkan di atas data yang lain.
Stack menggunakan konsep LIFO Singkatan dari “Last In
First Out” Artinya adalah data yang petama masuk adalah data yang pertama akan
keluar.
Di dalam stack ada istilah FLAG artinya adalah
pembatas. Flag ada 2 yaitu : Flag Top dan Flag Button
Flag Top : Batas Teratas
Flag Buttom : Batas Terbawah
Flag Top : Batas Teratas
Flag Buttom : Batas Terbawah
Di dalam stack ada istilah push dan pop. Kira kira artinya apa ya?
Push : digunakan untuk menambah item pada stack
Pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas
Contoh penggunaan PUSH
Disini kita telah disediakan stack dengan jumlah data
yang bias diisikan adalah 5 data, maka cara pengisiannya melalui Push
Contoh Penggunaan POP
Dari data yang diatas (penggunaan push ) kita disuruh
untuk menganbil data data yang ada di dalam stack itu, maka cara penggunaannya
adalah:
Istilah dan Operasi-Operasi yang ada di dalam stack
Selain ada operasi push dan pop, flag buttom dan flag Top ternyata masih ad yang lain, seperti:
Clear : digunakan untuk mengosongkan stack
IsEmpty : Digunkan untuk mengecek apakah stack sudah kosong
IsFull : Digunakan untuk mengecek apakah stack sudah penuh
Stack OverFlow : Artinya kepenuhan data
IsEmpty : Digunkan untuk mengecek apakah stack sudah kosong
IsFull : Digunakan untuk mengecek apakah stack sudah penuh
Stack OverFlow : Artinya kepenuhan data
Terus untuk apa sih Stack?
1. Stack digunkan untuk
penanganan Intrupsi Komputer (ctrl+alt+del)
2. Stack digunakanuntuk
mengecek kalimat POLINDROM ( kata yang walaupun di bolak balik memiliki arti
yang sama. Contohnya : KAKAK)
3. Stack digunakan untuk
mencari sebuah nilai konversi. Baik decimal ke biner,biner ke oktal ataupun
sebaliknya
Contoh:
1.
Jika diketahui 11(decimal) konversikanlah dalam bentuk
biner
2.
Jika diketahui 156( decimal) konversikanlah dalam
bentuk octal
Jawab:
1.
Karena biner adalah bilangan berbasis 2 maka 11 akan
kita bagi dengan 2
Keterangan :
-
sisa ita dapatkan dari =
Ø
contoh petama angka 11 dibagi dengan 2 maka sisa 1,
dikarenakan 2
x 5 = 10 , dan 11- 10 = 1
Ø
setelah itu 5 dibagi 2 maka sisanya 1,
2 x 2 = 4, dan
5 – 4 = 1
Ø
begitupun sampai sisa terakhir
2.
karena octal adalah bilangan berbasis 8 maka 156 akan
kita bagi dengan 8
RECURSION
Recursion atau rekursi Adalah algoritma cepat tapi
boros.
Contohnya ada pada pengerjaan factorial:
Contohnya ada pada pengerjaan factorial:
5!
= 5 x 4 x 3 x 2 x1 = 120
Scriptnya (menggunakan looping/perulangan) :
hasil
= 1;
for(int bilangan=5, bilangan>=1, bilangan --)
{
hasil = hasil x bilangan
}
for(int bilangan=5, bilangan>=1, bilangan --)
{
hasil = hasil x bilangan
}
rekursi adalah function yang memanggil function itu
sendiri. Kalau dimanusia ini sering terjadi yaitu adalah mimpi dalam mimpi.
contoh script untuk rekursi
function factorial(n)
{
IF(n===0)
{
return 1;
}
else
{
return n * factorial(n-1);
}
}
{
IF(n===0)
{
return 1;
}
else
{
return n * factorial(n-1);
}
}
kalu digambarkan lewat contoh bias menggunkan
pengerjaan factorial. Oh iya yang perlu diingat alur pengerjaan ini dilakukan
dari bawah ke atas ya.
Contoh : carilah factorial dari 3
Jawab :
QUEUE
Queue atau antrian. Queue menggunakan prinsip FIFO
“First In First Out” artinya adalah masuk pertama dan akan keluar pertama
Kita sering menemukan queue disekitar kita, contohnya
: antrian mobil di loket tol dan antrian bank.
Lalu bagai mana cara menambah atau menghapus data dari
queue?
Enqueue : digunakan untuk menambahkan data ke dalam queque
Dequeue : digunakan untuk menghapus element terdepan di dalam queque
Enqueue : digunakan untuk menambahkan data ke dalam queque
Dequeue : digunakan untuk menghapus element terdepan di dalam queque
Didalam Queue juga terdapat element depan dan element belakang.
depan = Front/Head
Belakang = Rear/Tail
Contoh penggunaan Enqueue
Dari contoh diatas dapat dibuktikan bahwa saat data
datang, maka data akan menempatkan diri di posisi array paling terdepan
Contoh penggunaan Dequeue
Dari contoh penggunaan Dequeue di atas dapat di
ketahui bahwa data yang di hapus adalah data yang petama kali masuk/ data yang
terletak pada indeks kecil.
Selain ada operasi Enqueue dan Dequeue, di Queue juga
ada operasi yang lain, seperti:
Ø
Create() : digunakan untuk menciptakan dan
menginisialisasi queue dengan cara
membuat head dan tail =-1
Ø
IsEmpty() : untuk memeriksa apakah antrian sudah penuh
atau belum,
jika sedah penuh maka nilai tail akan terisi, namun jika data kosong
maka
nilai head akan tidak terisi
Ø
IsFull() : untuk memeriksa apakah antrian sudah penuh
atau belum,
jika sedah penuh maka nilai tail akan terisi, namun jika data kosong
maka
nilai head akan tidak terisi
Ø
Clear() : untuk menghapus semua isi dari Queue
Ø
Tampil() : untuk menampilkan nilai nilai antrian menggunakan
looping
Sekian
dulu ya pembahasan kali ini tentang Stack,Recursion dan Queue. Semoga
bermanfaat
wassalamualaikum Wr.Wb
Komentar
Posting Komentar