1 / 26

Stack (Tumpukan)

Stack (Tumpukan). Definisi. Kumpulan data yang seolaholah diletakkan di atas data yang lain. Operasi penambahan (penyisipan) dan pengambilan (penghapusan) prinsip pengolahannya adalah last-in first-out (LIFO). Ilustrasi Tumpukan. OPERASI PADA TUMPUKAN. Ada 2 operasi dasar tumpukan

Download Presentation

Stack (Tumpukan)

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. Stack(Tumpukan)

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

  3. Ilustrasi Tumpukan

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

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

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

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

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

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

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

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

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

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

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

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

  16. Kurung tutup : Push kedalam tumpukan • Operator : Jika tumpukan kosong, atau derajat R lebih tinggidibanding derajat ujungtumpukan, push operatorkedalam tumpukan. Jika tidak pop ujung tumpukan dantulis, 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.

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

  18. Contoh notasi prefix dari notasi infix : • Infix Prefix • A + B + A B • A + B – C - + A B C • ( A + B ) * ( C – D ) * + A B – C D

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

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

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

  22. 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 tinggidibanding derajat ujung tumpukan, push operatorkedalam tumpukan. Jika tidak pop ujung tumpukan dantulis, 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.

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

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

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

  26. The End

More Related