Stack Tumpukan Definisi Kumpulan data yang seolah diletakkan

  • Slides: 26
Download presentation
Stack (Tumpukan)

Stack (Tumpukan)

Definisi • • • Kumpulan data yang seolah diletakkan di atas data yang lain.

Definisi • • • Kumpulan data yang seolah diletakkan di atas data yang lain. Operasi penambahan (penyisipan) dan pengambilan (penghapusan) prinsip pengolahannya adalah last-in firstout (LIFO).

Ilustrasi Tumpukan

Ilustrasi Tumpukan

OPERASI PADA TUMPUKAN • Ada 2 operasi dasar tumpukan 1. Menyisipkan data (push) 2.

OPERASI PADA TUMPUKAN • Ada 2 operasi dasar tumpukan 1. Menyisipkan data (push) 2. Menghapus data (pop)

Operasi Push • Perintah push digunakan untuk memasukkan data ke dalam tumpukan.

Operasi Push • Perintah push digunakan untuk memasukkan data ke dalam tumpukan.

Operasi Pop • Operasi pop adalah operasi untuk menghapus elemen • Terletak pada posisi

Operasi Pop • Operasi pop adalah operasi untuk menghapus elemen • Terletak pada posisi paling atas dari sebuah tumpukan

OPERASI PADA STACK – Cont. 1. buat stack (stack) - create • membuat sebuah

OPERASI PADA STACK – Cont. 1. buat stack (stack) - create • membuat sebuah stack baru yang masih kosong • spesifikasi: – – – tujuan : mendefinisikan stack yang kosong input : stack syarat awal : tidak ada output stack : - (kosong) syarat akhir : stack dalam keadaan kosong

OPERASI PADA STACK – Cont. 2. stack kosong (stack) - empty • fungsi untuk

OPERASI PADA STACK – Cont. 2. stack kosong (stack) - empty • fungsi untuk menentukan apakah stack dalam keadaan kosong atau tidak • spesifikasi: – – – tujuan : mengecek apakah stack dalam keadaan kosong input : stack syarat awal : tidak ada output : boolean syarat akhir : stack kosong bernilai true jika stack dalam keadaan kosong

OPERASI PADA STACK – Cont. 3. stack penuh (stack) - full • fungsi untuk

OPERASI PADA STACK – Cont. 3. stack penuh (stack) - full • fungsi untuk memeriksa apakah stack yang ada sudah penuh • spesifikasi: – – – tujuan : mengecek apakah stack dalam keadaan penuh input : stack syarat awal : tidak ada output : boolean syarat akhir : stack penuh bernilai true jika stack dalam keadaan penuh

OPERASI PADA STACK – Cont. 4. push (stack, info baru) • menambahkan sebuah elemen

OPERASI PADA STACK – Cont. 4. push (stack, info baru) • menambahkan sebuah elemen kedalam stack. • spesifikasi: – – – tujuan : menambahkan elemen, info baru pada stack pada posisi paling atas input : stack dan Info baru syarat awal : stack tidak penuh output : stack syarat akhir : stack bertambah satu elemen

OPERASI PADA STACK – Cont. 5. pop (stack, info pop) • mengambil elemen teratas

OPERASI PADA STACK – Cont. 5. pop (stack, info pop) • mengambil elemen teratas dari stack • spesifikasi: – tujuan : mengeluarkan elemen dari stack yang berada posisi paling atas – input : stack – syarat awal : stack tidak kosong – output : stack dalam info pop – syarat akhir : stack berkurang satu elemen

CONTOH PEMANFAATAN STACK • Notasi Infix Prefix • Notasi Infix Postfix Pemanfaatan stack antara

CONTOH PEMANFAATAN STACK • Notasi Infix Prefix • Notasi Infix Postfix Pemanfaatan stack antara lain untuk menulis ungkapan dengan menggunakan notasi tertentu. Contoh : (A+B)*(C–D) Tanda kurung selalu digunakan dalam penulisan ungkapan numeris untuk mengelompokkan bagian mana yang akan dikerjakan terlebih dahulu. Dari contoh ( A + B ) akan dikerjakan terlebih dahulu, kemudian baru ( C – D ) dan terakhir hasilnya akan dikalikan. A+B*C–D B * C akan dikerjakan terlebih dahulu, hasil yang didapat akan berbeda dengan hasil notasi dengan tanda kurung.

Notasi Prefix • Cara penulisan ungkapan numeris. • “ Notasi Polish “ atau “

Notasi Prefix • Cara penulisan ungkapan numeris. • “ Notasi Polish “ atau “ Notasi Prefix” • artinya : Operator ditulis sebelum kedua operand yang akan disajikan.

Algoritma Infix Ke Prefix : • Langkah 0: • Baca ungkapan dalam notasi infix,

Algoritma Infix Ke Prefix : • Langkah 0: • Baca ungkapan dalam notasi infix, misalnya S; – Tentukan panjang ungkapan tersebut, misalnya N; – Siapkan sebuah tumpukan kosong dan siapkan derajat masing – masing operator. – Misalnya : * dan / berderajat 2, + dan – berderajat 1 dan ( berderajat 0 ).

 • Langkah 1: – Dimulai dari I : N sampai 1, kerjakan langkah

• Langkah 1: – Dimulai dari I : N sampai 1, kerjakan langkah – langkah berikut : –R=S(I) – Test nilai R. Jika R adalah : • Operand : Langsung ditulis • Kurung buka : Pop dan tulis semua isi tumpukan sampai ujung tumpukan = ‘)‘, pop juga tanda ini tetapi tidak perlu ditulis.

– Kurung tutup : Push kedalam tumpukan – Operator: Jika tumpukan kosong, atau derajat

– Kurung tutup : Push kedalam tumpukan – Operator: Jika tumpukan kosong, atau derajat R lebih tinggi dibanding derajat ujung tumpukan, push operator kedalam tumpukan. Jika tidak pop ujung tumpukan dan tulis, kemudian ulangi perbandingan R dengan ujung tumpukan, lalu R di push. • Langkah 2: Jika akhir notasi infix telah tercapai dan tumpukan masih belum kosong, pop semua isi tumpukan dan tulis hasilnya.

Notasi Infix Prefix Contoh : Proses konversi dari infix ke prefix : =(A+B)*(C–D) =[+AB]*[-CD]

Notasi Infix Prefix Contoh : Proses konversi dari infix ke prefix : =(A+B)*(C–D) =[+AB]*[-CD] =*[+AB][-CD] =*+AB-CD

 • Contoh notasi prefix dari notasi infix : • Infix Prefix • A+B

• Contoh notasi prefix dari notasi infix : • Infix Prefix • A+B +AB • A+B–C -+ABC • (A+B)*(C–D) *+AB–CD

Notasi Postfix • Kebalikan notasi prefix • Lebih dikenal dengan Notasi Polish Terbalik (

Notasi Postfix • Kebalikan notasi prefix • Lebih dikenal dengan Notasi Polish Terbalik ( Reverse Polish Notation atau RPN). • Dalam hal ini operator ditulis sesudah operand.

Algoritma Infix Ke Postfix : • Langkah 0: • Baca ungkapan dalam notasi infix,

Algoritma Infix Ke Postfix : • Langkah 0: • Baca ungkapan dalam notasi infix, misalnya S; – Tentukan panjang ungkapan tersebut, misalnya N; – Siapkan sebuah tumpukan kosong dan siapkan derajat masing – masing operator. – Misalnya : * dan / berderajat 2, + dan – berderajat 1 dan ( berderajat 0 ).

 • Langkah 1: – Dimulai dari I : 1 sampai N, kerjakan langkah

• Langkah 1: – Dimulai dari I : 1 sampai N, kerjakan langkah – langkah berikut : –R=S(I)

 • Test nilai R. Jika R adalah : – – • Operand :

• Test nilai R. Jika R adalah : – – • Operand : Langsung ditulis Kurung buka : Push kedalam tumpukan Kurung tutup : Pop dan tulis semua isi tumpukan sampai ‘(‘, pop juga tanda ini tetapi tidak perlu ditulis Operator : Jika tumpukan kosong, atau derajat R lebih tinggi dibanding derajat ujung tumpukan, push operator kedalam tumpukan. Jika tidak pop ujung tumpukan dan tulis, kemudian ulangi perbandingan R dengan ujung tumpukan, lalu R di push. Langkah 2: Jika akhir notasi infix telah tercapai dan tumpukan masih belum kosong, – pop semua isi tumpukan dan tulis hasilnya.

Notasi Infix Postfix Contoh : Proses konversi dari infix ke postfix : =(6 -2)*(5+4)

Notasi Infix Postfix Contoh : Proses konversi dari infix ke postfix : =(6 -2)*(5+4) =[62 -]*[54+] =[62 -][54+]* =62 -54+*

q Contoh : Ubah ekspresi A+B*C+(D+E)*F ke dalam notasi postfix dengan menggunakan algoritma Dijkstra

q Contoh : Ubah ekspresi A+B*C+(D+E)*F ke dalam notasi postfix dengan menggunakan algoritma Dijkstra Masukan A+B*C+(D+E)*F C+(D+E)*F +E)*F )*F *F F kosong Keluaran kosong A A AB ABC*+D ABC*+DE+ ABC*+DE+F*+ STACK kosong + + +* +* + +( +( +(+ + +* kosong

Contoh : Penggunaan notasi postfix dalam stack, misal : 2 14 + 5 *

Contoh : Penggunaan notasi postfix dalam stack, misal : 2 14 + 5 * = 80

The End

The End