1 / 32

Pertemuan 5 Struktur Data

Pertemuan 5 Struktur Data. Stack dan Queue. Pengertian ADT. Spesifikasi dari sekumpulan data termasuk operasi yang dapat dilakukan pada data tersebut . (Wikipedia)

Télécharger la présentation

Pertemuan 5 Struktur Data

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Pertemuan 5 Struktur Data Stack dan Queue

  2. 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)

  3. 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

  4. 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

  5. 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

  6. 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

  7. Stack (LIFO) Queue (FIFO) Penambahan (enqueue) Penghapusan (dequeue) Queue (FIFO) Penambahan Penghapusan Atas (top of stack) Stack (LIFO) Ilustrasi Stack dan Queue

  8. 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

  9. 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?

  10. 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; • }

  11. Proses push pada Stack Top Top Sesudah Sebelum

  12. Proses Pop pada Stack Benda keluar dari stack Top Top Sesudah Sebelum

  13. Pintu masuk Casting Film : Ice Scream Antri sesuai nomor kedatangan 5. Meri 4. Mira 3. Deni 2. Gani 1. Sandi Pintu keluar

  14. ImplementasiQueue dengan Array secaraLinear 0 1 2 3 4 5 6 7 dog fish duck cat finch Belakang Depan

  15. Antrikan snake 0 1 2 3 4 5 6 7 dog fish duck cat finch snake Depan Belakang

  16. Antrikan eel 0 1 2 3 4 5 6 7 dog fish duck cat finch snake eel Depan Belakang

  17. Layani 0 1 2 3 4 5 6 7 fish duck cat finch snake eel Depan Belakang dog Ini keluar dari queue

  18. Layani 0 1 2 3 4 5 6 7 duck cat finch snake eel Belakang Depan fish Ini keluar dari queue

  19. Antrikan tiger 0 1 2 3 4 5 6 7 duck cat finch snake eel tiger Depan Belakang

  20. Antrikan Ada ruang TAK ADA RUANG ape 0 1 2 3 4 5 6 7 duck cat finch snake eel tiger Depan Belakang

  21. Implementasi secara sirkuler 0 7 6 1 5 2 4 3

  22. Antrikan Implementasi secara sirkuler ape 0 1 2 3 4 5 6 7 ape duck cat finch snake eel tiger Belakang Depan

  23. 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

  24. 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

  25. 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

  26. 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 !!

  27. 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

  28. 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)

  29. 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)

  30. 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

  31. 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

  32. Latihan Buatlahsebuahalgoritmauntukmenetukanapakahsebuahkataadalah palindrome atautidak Perhatikangambardibawahini:

More Related