• Tidak ada hasil yang ditemukan

Think Different Materi ASD 2014 pertemuan_12

N/A
N/A
Protected

Academic year: 2017

Membagikan "Think Different Materi ASD 2014 pertemuan_12"

Copied!
45
0
0

Teks penuh

(1)
(2)

Topik

Pengertian stack

Operasi pada stack

Implementasi stack dengan array

(3)

Stack (Tumpukan)

“Benda yang terakhir masuk ke dalam stack akan menjadi yang pertama keluar

(4)

Ilustrasi Stack

Karena Compo ditumpuk di posisi terakhir, maka Compo

akan menjadi elemen teratas dalam tumpukan. Sebaliknya, karena Televisi ditumpuk pada saat pertama kali, maka

(5)

Pengertian

Stack (tumpukan) adalah struktur data

dimana proses pengambilan dan

penambahan element dilakukan pada satu ujung yang sama.

Stack mengikuti konsep LIFO.

LIFO (Last In First Out) : elemen yang

terakhir kali masuk akan menjadi elemen yang pertama kali keluar.

Stack dapat dibuat dengan menggunakan

(6)

PUSH, POP dan TOP

Operasi dasar pada stack adalah : pop dan push.Push : proses menambah item pada stack.

Pop : proses mengambil item pada stack.

Pop dan push sama-sama dilakukan pada item yang

terakhir kali ditambahkan pada stack.

Sedangkan pointer TOP akan menunjuk pada element

yang paling atas (yang paling akhir ditambahkan) pada stack.

Stack

(7)

Proses Operasi Stack

Contoh lain adalah ada sekumpulan perintah stack

yaitu push(5), push(7), pop, push(3), pop, pop. Jika dijalankan, maka yang akan terjadi adalah :

(8)

Pointer Top

Digunakan untuk menunjuk element

paling akhir yang dimasukkan kedalam

stack.

Jika top tidak menunjuk pada element

manapun hal ini menunjukkan bahwa

stack dalam kondisi kosong (empty).

Pada

array

: top akan menyimpan

(9)

Operasi pada Stack

1. Deklarasi

2. Inisialisasi

3. Cek kosong

4. Cek penuh

(10)

(1) Deklarasi

Proses yang harus dilakukan pertama

kali adalah deklarasi/menyiapkan

tempat.

Langkah yang harus dilakukan adalah :

Deklarasi class

Deklarasi struktur data (menggunakan

array atau linked list)

(11)

Deklarasi Stack dengan Array

1. Pembuatan class contoh :

2. Pembuatan variabel top :

int top;

3. Pembuatan variabel untuk menampung panjang array :

int array_size;

(mendeklarasikan variabel bernama array_size dengan tipe integer)

4. Pembuatan variabel Array :

int tumpukan[];

(12)
(13)

(2) Inisialisasi

Merupakan proses pemberian nilai awal.

Pada

Array

:

1. Pembentukan obyek array beserta ukurannya.

tumpukan = new int[10];

(pembentukan obyek array yang memiliki 10 element, dan alamat obyek akan disimpan pada variabel bernama

tumpukan)

2. Pemberian nilai awal pada variabel top=-1.

(14)
(15)

(3) Cek Kosong

Operasi yang digunakan untuk

mengecek kondisi stack dalam

keadaan kosong.

Caranya : melihat nilai top. Jika nilainya

sama seperti ketika inisialisasi berarti

stack dalam kondisi kosong (top =-1

atau top=null).

Operasi ini harus dapat

(16)
(17)

(4) Cek Penuh

Operasi yang hanya dapat diterapkan pada

stack yang menggunakan array.

Operasi ini digunakan untuk mengecek kondisi

stack dalam keadaan penuh.

Caranya : melihat nilai top. Jika nilai top sudah

menunjuk n-1 (dimana n adalah ukuran array) maka dapat diindikasikan stack sudah dalam kondisi penuh.

Operasi ini harus dapat mengembalikan nilai

(18)
(19)

(5) Operasi POP

Pop adalah proses pengambilan data pada

stack.

Ketika pop terjadi, element pada stack akan

berkurang, yaitu element yang paling akhir ditambahkan.

Sehingga posisi pointer top juga akan

bergeser :

(20)

(5) Operasi POP...

(lanjutan)

Langkah-langkah :

1. Pengecekan stack dalam kondisi kosong dengan memanggil method isEmpty(). Jika nilai yang

dikembalikan true maka pop tidak bisa dilakukan (penangkapan error oleh exception handling). Jika nilai yang dikembalikan false maka akan dilakukan langkah berikutnya (langkah 2 dan 3).

2. Data dari element paling belakang akan menjadi return value (nilai yang dikembalikan).

(21)

Program Pop (Array)

Untuk menggunakan StackException() harus

(22)

(6) Operasi Push

Push adalah proses penambahan element

pada stack.

Ketika push terjadi, element pada stack

akan bertambah 1.

Posisi pointer top akan bergeser menunjuk

pada element baru yang ditambahkan.

(23)

(6) Operasi PUSH...

(lanjutan)

Langkah-langkah :

1. Penambahan element baru pada bagian belakang stack.

2. Pergeseran posisi top.

Khusus untuk array, terlebih dahulu harus

dicek kondisi stack penuh dengan

(24)
(25)
(26)

(7) Operasi peek

Peek adalah proses

pengaksesan

element yang ditunjuk oleh top(yaitu

element yang terakhir kali

ditambahkan).

Operasi ini berbeda dengan pop

karena tidak disertai dengan

(27)
(28)

Contoh Penerapan Stack

Konversi Desimal ke Biner

Notasi Polish

Menara Hanoi

(29)
(30)

Notasi Polish (1)

Menggubah notasi infix menjadi notasi

postfix.

Contoh :

A+B (infix)

(31)

Algoritma

Misal :

Q = ekspresi matematika yang ditulis

dalam notasi infix

(32)

Algoritma

1. Push tanda “(“ ke stack dan tambahkan tanda “)” di sentinel di Q.

2. Scan Q dari kiri ke kanan, kemudian ulangi langkah c s.d f untuk setiap elemen Q sampai stack Q kosong.

3. Jika yang discan adalah operand, maka tambahkan ke P 4. Jika yang discan adalah “(“ maka push ke stack

5. Jika yang discan adalah “)” maka pop isi stack sampai

ditemukan tanda “(“, kemudian tambahkan ke P sedangkan tanda “(“ tidak disertakanke P.

6. Jika yang discan adalah operator, maka :

- Jika elemen paling atas dari stack adalah operator yang

mempunyai tingkatan sama atau lebih tinggi dari operator yang discan, maka pop operator tsb dan tambahkan ke P.

(33)

Contoh

(34)

Penyelesaian

Q = A + ( B * C - ( D / E ^ F ) * G ) * H

(35)
(36)

Penyelesaian

Hasil akhir :

Dari proses di atas didapatkan notasi

(37)

Notasi Polish (2)

Menghitung ekspresi matematika yang

disusun dalam notasi postfix.

Contoh :

(38)

Algoritma

Misal :

(39)

Algoritma

1.Tambahkan tanda “)” pada sentinel di P

2.Scan P dari kiri ke kanan, ulangi langkah c dan d untuk setiap elemen P sampai ditemukan sentinel. 3.Jika yang discan adalah operand, maka push ke

stack.

4.Jika yang discan adalah operator (sebut opr1), maka  Pop 1 buah elemen teratas dari stack, simpan dalam variable var1. Pop 1 buah elemen teratas dari stack, simpan dalam variable var2. Hitung variable (var2 opr1 var1), simpan hasil di variable hitung. Push variable hitung ke stack.

(40)

Contoh Kasus

(41)

Penyelesaian

P = 5, 2, 6, +, *, 12, 4, /,

-• Tambahkan tanda “)”pada sentinel P

sehingga

P = 5, 2, 6, +, *, 12, 4, /,

-,

)

(42)

Penyelesaian

Hasil :

(43)

Operator Priority

^

Pangkat, akar

/, *

Pembagian,

perkalian

+, -

Penambahan,
(44)

Latihan

1. Ubah notasi infix berikut ke dalam

bentuk notasi postfix :

(45)

Latihan

2. Hitung ekspresi matematika berikut

yang disusun dalam bentuk postfix :

• 2,2,3,+,*,3,2,-,*

Referensi

Dokumen terkait

Atribut ini menunjukan bahwa fungsi atau method bisa diakses oleh kelas lain dalam satu paket dan hanya kelas lain yang merupakan subclass nya pada paket yang berbeda. •

– Untuk tipe data reference seperti String , nilai dari String tidak akan diinisialisasi ke string kosong “” , sehingga Anda tetap harus membuat array String secara

termasuk operasi yang dapat dilakukan pada data

hapus adalah pointer bantu yang akan mencari node yang dimaksud

node downward, swapping with its larger child until the new node reaches an acceptable location.. Removing the Top of

Menghapus node pada AVL Tree sama dengan menghapus binary search tree procedure dengan perbedaan pada penanganan kondisi tidak balance. Penanganan kondisi tidak balance

Graph dengan 6 node dan 7 edge yang merepresentasikan jaringan pertemanan pada Facebook.. • Setiap sisi berlaku

Kunjungi simpul yang belum dikunjungi dan bertetangga dengan simpul-simpul yang tadi dikunjungi, demikian seterusnya.... Depth First