Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
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. (/ Sekumpulan nilai dan operasi-operasi yang diizinkan padanya (
3
Struktur Data = Container
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(); Sumber; Dimodifikasi dari Ruli Manurung dan Ade Azurat, Fasilkom UI 2008
4
ADT: List 1 2 3 4 Indeks Sebuah List adalah kumpulan benda di mana setiap benda memiliki posisi. Setiap benda dalam List dapat diakses melalui indeks-nya. Contoh paling gampang: array! 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 Least recent Most recent push pop,top 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)). 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 enqueue Most recent Least recent dequeue getFront 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)). Contoh operasi pada queue : void enqueue(Benda x); Benda dequeue(); Benda getFront(); Sumber; Dimodifikasi dari Ruli Manurung dan Ade Azurat, Fasilkom UI 2008
7
Penghapusan (dequeue)
Ilustrasi Stack dan Queue Stack (LIFO) Atas (top of stack) Penambahan Penghapusan Stack (LIFO) Queue (FIFO) 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 Benda keluar dari stack Top Sebelum Sesudah Top
13
Pintu masuk Casting Film : Ice Scream 5. Meri 4. Mira 3. Deni 2. Gani
Antri sesuai nomor kedatangan 5. Meri 4. Mira 3. Deni 2. Gani 1. Sandi Pintu keluar
14
Implementasi Queue dengan Array secara Linear
1 2 3 4 5 6 7 dog fish duck cat finch Depan Belakang
15
Antrikan snake 1 2 3 4 5 6 7 dog fish duck cat finch snake Depan
1 2 3 4 5 6 7 dog fish duck cat finch snake Depan Belakang Antrikan
16
Antrikan eel 1 2 3 4 5 6 7 dog fish duck cat finch snake eel Depan
1 2 3 4 5 6 7 dog fish duck cat finch snake eel Depan Belakang Antrikan
17
Layani 1 2 3 4 5 6 7 fish duck cat finch snake eel Depan Belakang dog
1 2 3 4 5 6 7 fish duck cat finch snake eel Depan Belakang dog Ini keluar dari queue Layani
18
Layani 1 2 3 4 5 6 7 duck cat finch snake eel Depan Belakang fish
1 2 3 4 5 6 7 duck cat finch snake eel Depan Belakang Layani fish Ini keluar dari queue
19
Antrikan tiger 1 2 3 4 5 6 7 duck cat finch snake eel tiger Depan
1 2 3 4 5 6 7 duck cat finch snake eel tiger Depan Belakang Antrikan
20
Antrikan Ada ruang TAK ADA RUANG ape 1 2 3 4 5 6 7 duck cat finch
1 2 3 4 5 6 7 duck cat finch snake eel tiger TAK ADA RUANG Ada ruang Depan Belakang Antrikan
21
Implementasi secara sirkuler
7 6 1 5 2 4 3
22
Implementasi secara sirkuler
Antrikan ape 1 2 3 4 5 6 7 ape duck cat finch snake eel tiger Belakang Depan
23
Kondisi Kritis : Kosong
Depan/front Belakang/Tail/Rear Hapus !!! 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
Representasi Linier Max II I Max Max III 1. Kondisi Awal
3 2 4 5 6 Max Depan/front = 1 Belakang/Tail/Rear = 1 II I Max 6 1. Kondisi Awal 5 2. Penambahan Awal Belakang := Belakang + 1; Antrian [Belakang] := x; 4 3 2 1 3 2 4 5 6 Max III Depan/front = 1 Belakang/Tail/Rear = 4 1 Depan/front = 1 Belakang/Tail/Rear = 0 # Kondisi Kosong, jika Belakang < Depan
25
Representasi Linier Max Max 3. Penghapusan 4. Penambahan sampai penuh
6 3. Penghapusan 5 X := Antrian [Depan]; 4 Depan := Depan + 1; 3 4. Penambahan sampai penuh 1 3 2 4 5 6 Max Depan/front = 3 Belakang/Tail/Rear = 6 Jumlah Elemen Antrian : Belakang - Depan + 1 2 1 Depan/front = 3 Belakang/Tail/Rear = 4
26
Kekurangan Representasi Linier
Kondisi Antrian : Max 6 Depan/front = 3 5 Belakang/Tail/Rear = 6 4 Jumlah elemen antrian = = 4 3 Tempat Kosong = = 2 2 1 3 2 4 5 6 Max 1 Penambahan ???? Belakang := Belakang + 1; Antrian [Belakang] := x; Akan terjadi Overflow, walaupun ada 2 tempat yang masih kosong !!
27
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 X := Antrian[1]; For I := 1 to Belakang - 1 do Antrian[I] := Antrian[I + 1]; Belakang := Belakang - 1 1 3 2 4 5 6 Max 1 Trouble !! Bagaimana kalo jumlah elemennya ????? Solusi II : Menggunakan variabel dinamis (pointer) dengan linked list
28
Penyajian PUSH Stack dengan Linked List
Isi : 23 Now Top Isi : 23 Now Top Isi : 11 Top (a) (b) (c) Isi : 23 Now Top Isi : 11 Isi : 52 (d)
29
Penyajian POP Stack dengan Linked List
Isi : 23 Hapus Isi : 11 Isi : 52 Top 52 elemen (a) Isi : 23 Hapus Isi : 11 11 elemen Top (b) Hapus Isi : 23 23 elemen Top (c)
30
Operasi Penambahan isi Queue dengan Linked List
1 2 3 4 5 head akhir tail
31
Operasi Penghapusan isi Queue dengan Linked List
1 2 3 5 head tail hapus 4 bantu 1 2 3 5 head tail hapus 4 bantu 1 2 3 5 head tail hapus 4 bantu
32
Latihan Buatlah sebuah algoritma untuk menetukan apakah sebuah kata adalah palindrome atau tidak Perhatikan gambar di bawah ini:
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.