Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

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

Presentasi serupa


Presentasi berjudul: "Pertemuan 5 Struktur Data Stack dan Queue. Pengertian ADT Spesifikasi dari sekumpulan data termasuk operasi yang dapat dilakukan pada data tersebut. (Wikipedia)"— Transcript presentasi:

1 Pertemuan 5 Struktur Data Stack dan Queue

2 Pengertian ADT Spesifikasi dari sekumpulan data termasuk operasi yang dapat dilakukan pada data tersebut. (Wikipedia) Sekumpulan data dan operasi terhadap data tersebut yang definisi-nya tidak bergantung pada implementasi tertentu. (/www.nist.gov/dads/) Sekumpulan nilai dan operasi-operasi yang diizinkan padanya (http://www.scribd.com/doc/ /Materi-2-Tipe-Data-Abstrak)

3 Struktur Data = Container Sumber; Dimodifikasi dari Ruli Manurung dan Ade Azurat, Fasilkom UI 2008 Sebuah struktur data dapat dipandang sebagai tempat penyimpanan benda (container). Beberapa hal yang dapat dilakukan: – Menaruh benda – Mengambil benda – Mencari benda tertentu – Mengosongkannya (atau periksa apakah kosong)‏ Contoh Interface struktur data : void add(Benda x); void remove(Benda x); void access(Benda x); void makeEmpty(); boolean isEmpty(); Contoh Interface struktur data : void add(Benda x); void remove(Benda x); void access(Benda x); void makeEmpty(); boolean isEmpty();

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! 1234 Indeks Contoh operasi pada list : void insert(int indeks, Benda x); void append(Benda x); void remove(int indeks); void remove(Benda x); Benda get(int indeks); Contoh operasi pada list : void insert(int indeks, Benda x); void append(Benda x); void remove(int indeks); void remove(Benda x); Benda get(int indeks); Sumber; Dimodifikasi dari Ruli Manurung dan Ade Azurat, Fasilkom UI 2008

5 ADT: Stack Sebuah Stack adalah kumpulan benda di mana benda yang baru berada di atas benda yang lama  LIFO Bayangkan setumpuk koran. Benda yang paling terakhir masuk ditaruh di atas tumpukan (top)  pengambilan dilakukan pada posisi top Operasi pada Stack membutuhkan waktu konstan (O(1)). Least recent Most recent pushpop,top Contoh operasi pada stack : void push(Benda x); Benda pop(); Benda top(); Contoh operasi pada stack : void push(Benda x); Benda pop(); Benda top(); Sumber; Dimodifikasi dari Ruli Manurung dan Ade Azurat, Fasilkom UI 2008

6 ADT: Queue Sebuah Queue adalah kumpulan benda di mana benda yang pertama masuk akan pertama keluar  FIFO Bayangkan antrian printer job pada jaringan. Benda yang paling awal masuk berada di depan antrian (front). Penambahan dilakukan di belakang, penghapusan dilakukan di depan Operasi pada Queue membutuhkan waktu konstan (O(1)). enqueue Most recentLeast recent dequeue getFront Contoh operasi pada queue : void enqueue(Benda x); Benda dequeue(); Benda getFront(); Contoh operasi pada queue : void enqueue(Benda x); Benda dequeue(); Benda getFront(); Sumber; Dimodifikasi dari Ruli Manurung dan Ade Azurat, Fasilkom UI 2008

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

8 Operasi-Operasi Pada 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-Operasi Pada 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 Sesudah Top Sebelum

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

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

14 Implementasi Queue dengan Array secara Linear Depan Belakang 0 dogfishduckcatfinch

15 Antrikan DepanBelakang 0 dogfishduckcatfinchsnake

16 Antrikan DepanBelakang 0 dogfishduckcatfinchsnakeeel

17 Layani DepanBelakang 0 fishduckcatfinchsnakeeel dog Ini keluar dari queue

18 Layani Depan Belakang 0 duckcatfinchsnakeeel fish Ini keluar dari queue

19 Antrikan DepanBelakang 0 duckcatfinchsnakeeeltiger

20 Antrikan DepanBelakang 0 duckcatfinchsnakeeeltiger ape TAK ADA RUANG Ada ruang

21 Implementasi secara sirkuler

22 Antrikan Depan 0 duckcatfinchsnakeeeltiger ape Belakang ape Implementasi secara sirkuler

23 Depan/front Belakang/Tail/Rear Kondisi Kritis : Kosong Max Hapus !!! Underflow  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 So….

24 Representasi Linier Max 1. Kondisi Awal Depan/front = 1 Belakang/Tail/Rear = 0 2. Penambahan Awal Belakang := Belakang + 1; Antrian [Belakang] := x; I Max Depan/front = 1 Belakang/Tail/Rear = 1 II Max III Depan/front = 1 Belakang/Tail/Rear = 4 # Kondisi Kosong, jika Belakang < Depan

25 Max 3. Penghapusan X := Antrian [Depan]; Depan := Depan + 1; Representasi Linier Depan/front = 3 Belakang/Tail/Rear = 4 4. Penambahan sampai penuh Max Depan/front = 3 Belakang/Tail/Rear = 6 Jumlah Elemen Antrian : Belakang - Depan + 1

26 Max Kekurangan Representasi Linier Depan/front = 3 Belakang/Tail/Rear = 6 Jumlah elemen antrian = = 4 Kondisi Antrian : Tempat Kosong = = 2 Penambahan ???? Max Belakang := Belakang + 1; Antrian [Belakang] := x; Akan terjadi Overflow, walaupun ada 2 tempat yang masih kosong !!

27 Solusi I : Melakukan Pergeseran Pergeseran elemen Max Prosedur penghapusan ditambah dengan pergeseran “Jika ada elemen yang di hapus, maka elemen diatasnya bergeser hingga nilai Depan selalu sama dengan 1”. X := Antrian[1]; For I := 1 to Belakang - 1 do Antrian[I] := Antrian[I + 1]; Belakang := Belakang Max Trouble !! Bagaimana kalo jumlah elemennya ????? Solusi II : Menggunakan variabel dinamis (pointer) dengan linked list

28 Penyajian PUSH Stack dengan Linked List Top Isi : 23 NowTop Isi : 23 NowTop Isi : 11 Isi : 23 NowTop Isi : 11 Isi : 52 (a) (b)(c) (d)

29 Isi : 23 Hapus Isi : 11 Isi : 52 Top 52 elemen Isi : 23 Hapus Isi : elemen Top Hapus Isi : elemen Top Penyajian POP Stack dengan Linked List (a) (b) (c)

30 Operasi Penambahan isi Queue dengan Linked List head akhir tail head akhir tail head akhir tail

31 Operasi Penghapusan isi Queue dengan Linked List head tailhapus 4 bantu head tail hapus 4 bantu head tail hapus 4 bantu

32 Latihan 1.Buatlah sebuah algoritma untuk menetukan apakah sebuah kata adalah palindrome atau tidak 2.Perhatikan gambar di bawah ini:


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

Presentasi serupa


Iklan oleh Google