1 / 26

Stack

Stack. Pertemuan 11. Stack atau tumpukan adalah suatu stuktur data yang penting dalam pemrograman Bersifat LIFO (Last In First Out) Benda yang terakhir masuk ke dalam stack akan menjadi benda pertama yang dikeluarkan dari stack.

tiara
Download Presentation

Stack

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 Pertemuan 11

  2. Stack atautumpukanadalahsuatustuktur data yang pentingdalampemrograman • BersifatLIFO (Last In First Out) • Benda yang terakhirmasukkedalam stack akanmenjadibendapertamayang dikeluarkandari stack

  3. Karenakitamenumpuk Compo diposisiterakhir, maka Compo akanmenjadielementeratasdalamtumpukan. • Sebaliknya, karenakitamenumpukTelevisipada saat pertama kali, maka elemen Televisi menjadi elemen terbawah dari tumpukan. • Dan jikakitamengambilelemendaritumpukan, makasecaraotomatisakanterambilelementeratas, yaituCompo juga.

  4. Operasi-operasi/fungsi Stack • Push : digunakan untuk menambah item pada stack pada tumpukan paling atas • Pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas • Clear : digunakanuntukmengosongkan stack • IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong • IsFull: fungsi yang digunakanuntukmengecekapakah stack sudahpenuh

  5. Stack with Array of Struct • DefinisikanStack denganmenggunakanstruct • DefinisikanMAX_STACK untukmaksimumisi stack • Buatlahvariabel array data sebagaiimplementasi stack secaranyata • Deklarasikanoperasi-operasi/function diatasdanbuatimplemetasinya

  6. Deklarasi MAX_STACK #define MAX_STACK 10 //hati-hati mulai dari 0 jadi 0-9 • Deklarasi STACK denganstructdan array data typedefstruct STACK{ int top; char data[10][10]; //misalkan : data adalah array of string //berjumlah 10 data, masing-masing string //menampungmaksimal 10 karakter }; • Deklarasi/buatvariabeldaristruct STACK tumpuk;

  7. Inisialisasi Stack - Padamulanyaisi top dengan -1, karena array dalam C dimulaidari 0, yang berarti stack adalah KOSONG! - Top adalahsuatuvariabelpenandadalam STACK yang menunjukkanelementeratas Stack sekarang. Top Of Stack akanselalubergerakhinggamencapai MAX of STACK sehinggamenyebabkan stack PENUH!

  8. Ilustrasi stack pada saat inisialisasi:

  9. FungsiIsFull - Untukmemeriksaapakah stack sudahpenuh? - Dengan cara memeriksa top of stack, jika sudah sama dengan MAX_STACK-1 maka full, jikabelum (masihlebihkecildari MAX_STACK-1) makabelumfull

  10. FungsiIsEmpty - Untukmemeriksaapakah stack masihkosong? - Dengancaramemeriksa top of stack, jikamasih -1 makaberarti stack masihkosong! - Program:

  11. Fungsi Push - Untukmemasukkanelemenke stack, selalumenjadielementeratas stack - Tambahsatu (increment) nilai top of stack terlebihdahulusetiap kali adapenambahan elemen stack, asalkan stack masihbelumpenuh, kemudianisikannilaibaruke stack berdasarkanindeks top of stack setelahditambahsatu (diincrement)

  12. Fungsi Push

  13. Fungsi Pop - Untuk mengambil elemen teratas dari stack. - Ambildahulunilaielementeratas stack denganmengakses top of stack, tampilkan nilai yang akandiambilterlebihdahulu, barudidecrementnilai top of stack sehingga jumlahelemen stack berkurang

  14. Fungsi Pop

  15. Fungsi Print - Untukmenampilkansemuaelemen-elemen stack - Dengancara looping semuanilai array secaraterbalik, karenakitaharusmengaksesdariindeks array tertinggiterlebihdahulubarukeindeks yang kecil!

  16. Fungsi Print

  17. Program lengkapnya

  18. CONTOH PEMANFAATAN STACK • Notasi Infix Prefix • Notasi Infix Postfix Pemanfaatan stack antara lain untukmenulisungkapandenganmenggunakannotasitertentu. Contoh : ( A + B ) * ( C – D )‏ Tandakurungselaludigunakandalampenulisanungkapannumerisuntukmengelompokkanbagianmana yang akandikerjakanterlebihdahulu. Dari contoh ( A + B ) akandikerjakanterlebihdahulu, kemudianbaru ( C – D ) danterakhirhasilnyaakandikalikan. A + B * C – D B * C akandikerjakanterlebihdahulu, hasil yang didapatakanberbedadenganhasilnotasidengantandakurung.

  19. Notasi Infix Prefix Cara penulisanungkapanyaitudenganmenggunakannotasi infix, yang artinya operator ditulisdiantara 2 operand. Seorangahlimatematikabernama Jan Lukasiewicczmengembangkansuatucarapenulisanungkapannumeris yang disebut prefix, yang artinya operator ditulissebelumkedua operand yang akandisajikan. Contoh : Proseskonversi dari infix ke prefix : = ( A + B ) * ( C – D )‏ = [ + A B ] * [ - C D ] = * [ + A B ] [ - C D ] = * + A B - C D

  20. Notasi Infix Postfix Cara penulisanungkapanyaitudenganmenggunakannotasi postfix, yang artinya operator ditulissesudah operand. Contoh : Proseskonversi dari infix ke postfix : = ( 6 - 2 ) * ( 5 + 4 )‏ = [ 6 2 - ] * [ 5 4 + ] = [ 6 2 - ] [ 5 4 + ] * = 6 2 - 5 4 + *

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

  22. Konversi Infix ke Postfix • Baca ungkapandalamnotasi infix, misalnya S, tentukanpanjangungkapantersebut, misalnya N karakter, siapkansebuah stack kosongdansiapkanderajatmasing-masing operator, misalnya : ^ berderajat 3, * dan / berderajat 2, + dan – berderajat 1, ( dan ) berderajat 0. • Dimulaidarii=1 sampai N kerjakanlangkah-langkahsbb : • R = S[1] • Test nilai R. Jika R adalah : operand : langsungditulis kurungbuka: push kedalamtumpukan

  23. Konversi Infix ke Postfix kurungtutup : pop dantulissemuaisitumpukansampaiujungtumpukan= ‘(‘ ini, tetapitidakusahditulis. Operator : jikatumpukankosongatauderajat R lebihtinggidibandingderajatujungtumpukan, push operator kedalamtumpukan. Jikatidak, pop ujungtumpukandantulis, kemudianulangipembandingan R denganujungtumpukan, kemudian R di-push. c. Jikaakhirnotasi infix telahtercapai, dantumpukanmasih belumkosong, pop semuaisitumpukandantulishasilnya.

More Related