320 likes | 620 Views
Pertemuan 5 Struktur Data. Stack dan Queue. Pengertian ADT. Spesifikasi dari sekumpulan data termasuk operasi yang dapat dilakukan pada data tersebut . (Wikipedia)
E N D
Pertemuan 5 Struktur Data Stack dan Queue
Pengertian ADT • Spesifikasidarisekumpulan data termasukoperasi yang dapatdilakukanpada data tersebut. (Wikipedia) • Sekumpulan data danoperasiterhadap data tersebut yang definisi-nyatidakbergantungpadaimplementasitertentu. (/www.nist.gov/dads/) • Sekumpulannilaidanoperasi-operasi yang diizinkanpadanya(http://www.scribd.com/doc/6188327/Materi-2-Tipe-Data-Abstrak)
Struktur Data = Container • Sebuahstruktur data dapatdipandangsebagaitempatpenyimpananbenda (container). • Beberapahal yang dapatdilakukan: • Menaruhbenda • Mengambilbenda • Mencaribendatertentu • Mengosongkannya (atauperiksaapakahkosong) Contoh Interface struktur data: void add(Benda x); void remove(Benda x); void access(Benda x); void makeEmpty(); booleanisEmpty(); Sumber; DimodifikasidariRuliManurungdan Ade Azurat, Fasilkom UI 2008
ADT: List Sebuah List adalah kumpulan benda di mana setiap benda memiliki posisi. Setiap benda dalam List dapat diakses melalui indeks-nya. Contoh paling gampang: array! Indeks 1 2 3 4 Contohoperasipadalist: void insert(intindeks, Benda x); void append(Benda x); void remove(intindeks); void remove(Benda x); Benda get(intindeks); Sumber; DimodifikasidariRuliManurungdan Ade Azurat, Fasilkom UI 2008
ADT: Stack SebuahStackadalahkumpulanbendadimanabenda yang baruberadadiatasbenda yang lama LIFO Bayangkansetumpukkoran. Benda yang paling terakhirmasukditaruhdiatastumpukan (top) pengambilandilakukanpadaposisi top Operasipada Stack membutuhkanwaktukonstan (O(1)). push pop,top Most recent Least recent Contohoperasipadastack: void push(Benda x); Benda pop(); Benda top(); Sumber; DimodifikasidariRuliManurungdan Ade Azurat, Fasilkom UI 2008
ADT: Queue SebuahQueueadalahkumpulanbendadimanabenda yang pertamamasukakanpertamakeluar FIFO Bayangkanantrian printer job padajaringan. Benda yang paling awalmasukberadadidepanantrian (front). Penambahandilakukandibelakang, penghapusandilakukandidepan Operasipada Queue membutuhkanwaktukonstan (O(1)). enqueue dequeue getFront Most recent Least recent Contohoperasipadaqueue: void enqueue(Benda x); Benda dequeue(); Benda getFront(); Sumber; DimodifikasidariRuliManurungdan Ade Azurat, Fasilkom UI 2008
Stack (LIFO) Queue (FIFO) Penambahan (enqueue) Penghapusan (dequeue) Queue (FIFO) Penambahan Penghapusan Atas (top of stack) Stack (LIFO) Ilustrasi Stack dan Queue
Operasi-OperasiPada Stack Initialisasi Stack. Pop benda dari posisi top stack. Push benda ke dalam posisi top. Apakah Stack kosong? Jangan underflow Apakah Stack penuh? Jangan overflow Mengosongkan Stack Menentukan Ukuran Stack
Operasi-OperasiPada Queue Inisialisasi queue. Antrikan benda ke bagian belakang queue. Layani benda dari bagian depan queue. Apakah queue kosong? Apakah queue penuh? Berapa ukuran queue?
Implementasi Stack dengan Array • Operasi Push • Operasi Pop • void push(stack t, int x); • { • t.top = t.top+1; • t.isi[t.top] = x; • } • void pop(stack t); • { • t.top = t.top-1; • }
Proses push pada Stack Top Top Sesudah Sebelum
Proses Pop pada Stack Benda keluar dari stack Top Top Sesudah Sebelum
Pintu masuk Casting Film : Ice Scream Antri sesuai nomor kedatangan 5. Meri 4. Mira 3. Deni 2. Gani 1. Sandi Pintu keluar
ImplementasiQueue dengan Array secaraLinear 0 1 2 3 4 5 6 7 dog fish duck cat finch Belakang Depan
Antrikan snake 0 1 2 3 4 5 6 7 dog fish duck cat finch snake Depan Belakang
Antrikan eel 0 1 2 3 4 5 6 7 dog fish duck cat finch snake eel Depan Belakang
Layani 0 1 2 3 4 5 6 7 fish duck cat finch snake eel Depan Belakang dog Ini keluar dari queue
Layani 0 1 2 3 4 5 6 7 duck cat finch snake eel Belakang Depan fish Ini keluar dari queue
Antrikan tiger 0 1 2 3 4 5 6 7 duck cat finch snake eel tiger Depan Belakang
Antrikan Ada ruang TAK ADA RUANG ape 0 1 2 3 4 5 6 7 duck cat finch snake eel tiger Depan Belakang
Implementasi secara sirkuler 0 7 6 1 5 2 4 3
Antrikan Implementasi secara sirkuler ape 0 1 2 3 4 5 6 7 ape duck cat finch snake eel tiger Belakang Depan
Hapus !!! Kondisi Kritis : Kosong Depan/front Belakang/Tail/Rear Max Underflow So…. • Penambahan elemen akan menambah nilai Belakang/Tail/Rear • Penghapusan elemen akan menambah nilai Depan/Front • ……Front dan tail selalu bergerak maju………………….. • Representasi Antrian dalam dua cara : Linier dan circular
II Max 6 5 2. Penambahan Awal 4 Belakang := Belakang + 1; 3 Antrian [Belakang] := x; 2 Max 1 6 5 Depan/front = 1 Belakang/Tail/Rear = 1 4 3 2 Depan/front = 1 1 Belakang/Tail/Rear = 4 III Representasi Linier I Max 6 1. Kondisi Awal 5 4 3 2 1 Depan/front = 1 Belakang/Tail/Rear = 0 # Kondisi Kosong, jika Belakang < Depan
4. Penambahan sampai penuh Max 6 5 Depan/front = 3 4 Belakang/Tail/Rear = 6 3 Jumlah Elemen Antrian : Belakang - Depan + 1 2 1 Representasi Linier Max 6 3. Penghapusan 5 X := Antrian [Depan]; 4 Depan := Depan + 1; 3 2 1 Depan/front = 3 Belakang/Tail/Rear = 4
Max 6 5 Belakang := Belakang + 1; 4 Antrian [Belakang] := x; 3 2 1 Kekurangan Representasi Linier Kondisi Antrian : Max 6 Depan/front = 3 5 Belakang/Tail/Rear = 6 4 Jumlah elemen antrian = 6 - 3 + 1 = 4 3 Tempat Kosong = 6 - 4 = 2 2 1 Penambahan ???? Akan terjadi Overflow, walaupun ada 2 tempat yang masih kosong !!
X := Antrian[1]; Max 6 For I := 1 to Belakang - 1 do 5 Antrian[I] := Antrian[I + 1]; Belakang := Belakang - 1 4 3 2 1 Solusi I : Melakukan Pergeseran Pergeseran elemen Max 6 Prosedur penghapusan ditambah dengan pergeseran 5 “Jika ada elemen yang di hapus, maka elemen diatasnya bergeser hingga nilai Depan selalu sama dengan 1”. 4 3 2 1 Trouble !! Bagaimana kalo jumlah elemennya 10000 ????? Solusi II : Menggunakan variabel dinamis (pointer) dengan linked list
Now Top Isi : 23 Isi : 11 Now Top Isi : 52 Isi : 23 Isi : 11 Top Now Top Isi : 23 Penyajian PUSH Stack denganLinked List (a) (b) (c) (d)
Hapus Top elemen Isi : 23 23 Hapus Top elemen Isi : 52 Isi : 23 Isi : 11 52 Hapus Top elemen Isi : 11 Isi : 23 11 Penyajian POP Stack denganLinked List (a) (b) (c)
1 3 4 2 5 akhir head tail akhir head tail 1 3 4 2 5 akhir head tail 1 3 4 2 5 OperasiPenambahanisi Queue dengan Linked List
head bantu hapus tail 5 4 1 3 2 head bantu hapus tail 5 4 1 3 2 head bantu hapus tail 5 4 1 3 2 OperasiPenghapusanisi Queue dengan Linked List
Latihan Buatlahsebuahalgoritmauntukmenetukanapakahsebuahkataadalah palindrome atautidak Perhatikangambardibawahini: