1 / 21

STACK ( TUMPUKAN )

STACK ( TUMPUKAN ). Fajrizal. Stack ( Tumpukan ) dapat diartikan sbg : Suatu kumpulan data yang seolah-olah ada data yg diletakkan diatas data yg lain, yg bisa menyisipkan ( menambah ) data serta mengambil ( menghapus data ). Cara penggambaran stack : Operasi yg dpt dilakukan dalam stack :

aoife
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 ) Fajrizal

  2. Stack ( Tumpukan ) dapat diartikan sbg : Suatu kumpulan data yang seolah-olah ada data yg diletakkan diatas data yg lain, yg bisa menyisipkan ( menambah ) data serta mengambil ( menghapus data ). • Cara penggambaran stack : • Operasi yg dpt dilakukan dalam stack : 1. Menyisipkan / menambahkan data pd ujung atas stack  push 2. Menghapus / mengeluarkan data dr ujung atas stack  pop • Prinsip kerja stack adalah LIFO ( Last In First Out ) Top D C B Bottom A

  3. Pop ( S ) Kondisi awal Stack • Example : 4 1 B A 2 5 Pop ( S ) Push ( S, A ) A A Push ( S, D ) D C Push ( S, C ) C Push ( S, C ) 3 6 B B Push ( S, B ) Push ( S, B ) A A

  4. Latihan : Gambarkan keadaan stack utk operasi berikut ( diasumsikan keadaan awal stack kosong ), stack dapat menampung max 4 elemen berupa data NIM. a. Tambahkan 2 no NIM ke dalam stack yaitu ( 0631521001 & 0631521002 ) b. keluarkan 1 elemen dari stack c. Tambahkan 3 elemen berikutnya ke dalam stack dg data (0631521003 & 0631521004 & 0631521005 )

  5. Penyajian awal Stack : Dalam Pascal dikenal type data terstruktur yg disebut ARRAY (LARIK). Dapat digunakan u menyajikan sebuah tumpukan. Tapi penyajian dg mengg. ARRAY adalah kurang tepat karena banyaknya elemen dalam array adalah statis. Sedangkan dalam tumpukan, banyaknya elemen dapat bervariasi ( dinamis ). Meskipun demikian, ARRAY dapat digunakan u menyajikan sebuah tumpukan dg anggapan bahwa banyaknya elemen max dari tumpukan tsb tidak akan melebihi batas max banyaknya elemen dalam array. • Pada saat ukuran tumpukan = ukuran array, jika ditambahkan data baru akan menyebabkan “OVERFLOW”. • Dengan demikian perlu adanya data tambahan u mencatat posisi ujung atas tumpukan.

  6. Dengan kebutuhan ini, penyajian tumpukan dapat dilakukan dengan menggunakan type data terstruktur yang lain yaitu RECORD ( Rekaman ) yg terdiri dari 2 field : - Field 1  Digunakan u menyimpan elemen tumpukan yg bertype array - Field 2  Digunakan u mencatat posisi atas ujung tumpukan. Deklarasi STACK secara umum : const MaxElemen =255; type Tumpukan = record Isi : array[1..MaxElemen] of string; atas : 0..MaxElemen end; var T : Tumpukan;

  7. Operasi PUSH : procedure PUSH ( var T : Tumpukan; X : string ); begin T.Atas :=T.Atas + 1; T.Isi[T.Atas] := X end; procedure PUSH ( var T : Tumpukan; X : string ); begin if T.Atas = MaxElemen then writeln ( ‘ TUMPUKAN SUDAH PENUH ‘ ) else begin T.Atas :=T.Atas + 1; T.Isi[T.Atas] := X end end; 1 2

  8. Operasi POP : procedure POP ( var T : Tumpukan); begin T.Atas :=T.Atas - 1 end; procedure POP ( var T : Tumpukan); begin if T.Atas = 0 then writeln ( ‘ TUMPUKAN SUDAH KOSONG ‘ ) else begin T.Atas :=T.Atas - 1 end end; 1 2

  9. PENULISAN UNGKAPAN NUMERIS DALAM STACK • Salah satu aplikasi STACK adalah untuk menulis ungkapan dengan menggunakan notasi tertentu. • Cara penulisan ungkapan dapat dilakukan dengan menggunakan : 1. Notasi INFIX Operator diletakkan diantara 2 operand ex : A+B  dimana A,B sbg operand dan + sbg operator 2. Notasi PREFIX ( POLISH ) Operator diletakkan sebelum 2 operand disajikan ex : +AB 3. Notasi POSTFIX ( SUFFIX ) operator diletakkan setelah 2 operand disajikan ex : AB+

  10. Dalam penulisan ungkapan, khususnya ungkapan numeris seringkali digunakan tanda kurung u mengelompokkan bagian mana yg harus dikerjakan lebih dahulu. • Dalam ungkapan2 yg rumit, pemakaian tanda kurung ini tidak bisa dihindari. • “ Semakin rumit ungkapan maka semakin banyak dibutuhkan tanda kurung “. • Hal ini membawa suatu konsekwensi bahwa penulisan tanda kurung itupun harus benar2 terhindar dari kesalahan. • Contoh : ( dalam notasi infix ) DG METODE SUBSTITUSI 1. A + B x C Notasi PrefixNotasi Postfix xBC  1 BCx  1 +A1  2 A1+  2 • Latihan : 2. (A + B) x (C –(D ^ E)) 3. (A x B) – ( C + D ) / ( E x ( F – G ) ) 1 2

  11. Algorithma Konversi dari Infix ke Postfix • Langkah 0 ( Awal ) - Baca ungkapan dalam notasi infix, misalnya = S - Tentukan panjang ungkapan tersebut, misalnya N karakter - Siapkan sebuah tumpukan kosong & siapkan derajad masing2 operator, misalnya : ^ pangkat = bernilai 3 x , / = bernilai 2 + , - = bernilai 1 ) , ( = bernilai 0 • Langkah 1 Dimulai dari I=1 sampai N, kerjakan langkah2 berikut a. R = S [ I ] b. Test nilai R, jika R adalah : operand : langsung ditulis kurung buka : push ke dalam tumpukan kurung tutup : pop dan tulis semua isi tumpukan sampai ujung tumpukan = ‘(‘. Pop juga tanda ‘(‘ ini, tapi tidak usah ditulis.

  12. operator : jika tumpukan kosong, atau derajad R lebih tinggi dibanding derajad ujung tumpukan, push operator ke dalam tumpukan. Jika tidak, pop ujung tumpukan da tulis, kemudian ulangi pembandingan R ujung tumpukan. Kemudian R di push. • Langkah 2 Jika akhir notasi infix telah tercapai, dan tumpukan masih belum kosong, pop semua isi tumpukan dan tulis hasilnya.

  13. 1. ( A + B ) x ( C – D )  N = 11 karakter

  14. ( K ^ ( L + M )) + ( N – O )  N = 15 karakter

  15. 2. (A + B) * (C – D) ^ E  N = 13 karakter

  16. 2 1 • Cara Substitusi : Infix Postfix ( A x B ) x ( C – D ) 1. A*B 1. AB* 2. C-D 2. CD- 3. 1*2 3. 12* 4. AB*CD-* LATIHAN : • A + B * C – D ^ E • (A * B) – ( C + D ) / ( E * ( F – G )) 3

  17. Algorithma Konversi dari Infix ke Prefix • Langkah 0 ( Awal ) - Baca ungkapan dalam notasi infix, misalnya = S - Tentukan panjang ungkapan tersebut, misalnya N karakter - Siapkan sebuah tumpukan kosong & siapkan derajad masing2 operator, misalnya : $ pangkat = bernilai 3 x , / = bernilai 2 + , - = bernilai 1 ) , ( = bernilai 0 • Langkah 1 Dimulai dari I=N sampai 1, kerjakan langkah2 berikut a. R = S [ I ] b. Test nilai R, jika R adalah : operand : langsung ditulis & simpan ke var T kurung tutup : push ke dalam tumpukan kurung buka : pop dan tulis semua isi tumpukan sampai ujung tumpukan = ‘)‘. Pop juga tanda ‘)‘ ini, tapi tidak usah ditulis.

  18. operator : jika tumpukan kosong, atau derajad R lebih tinggi atau sama dibanding derajad ujung tumpukan, push operator ke dalam tumpukan. Jika tidak, pop ujung tumpukan dan tulis disimpan ke var T, kemudian ulangi pembandingan R ujung tumpukan. Kemudian R di push. • Langkah 2 Jika akhir notasi infix telah tercapai, dan tumpukan masih belum kosong, pop semua isi tumpukan dan tulis hasilnya, kemudian simpan ke var T. • Langkah 3 Baca data dalam variabel T, dimulai dari N sampai 1 dan tulis ke dalam notasi prefix.

  19. ( A + B ) x ( C – D )  N = 11 karakter

  20. SELESAIKAN : (A + B) * (C – D) ^ E A * B – ( C + D ) / ( E * ( F – G ) )

More Related