1 / 10

BAB 3

BAB 3. STACK (TUMPUKAN). Daftar linier Sebuah daftar linier atau list linier, merupakan suatu struktur data umum yang terbentuk dari barisan hingga (yang terurut) dari satuan data maupun dari record . Elemen yang terdapat didalam daftar linier disebut simpul Atau node.

taryn
Download Presentation

BAB 3

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. BAB 3 STACK (TUMPUKAN) Daftar linier Sebuah daftar linier atau list linier, merupakan suatu struktur data umum yang terbentuk dari barisan hingga (yang terurut) dari satuan data maupun dari record. Elemen yang terdapat didalam daftar linier disebut simpul Atau node. Kita menyatakan list linier A yang mengandung T elemen pada suatu saat, sebagai A = [ A1, A2, … , AT ]. Jika T = 0, maka A disebut list hampa / null list.

  2. Contoh daftar linier adalah : • File • Stack (tumpukan) • Queue (antrean) • Linked list • File • Salah satu contoh daftar linier adalah file, yang elemen - • elemennya adalah record. Misalnya nomor didalam buku • telepon membentuk suatu daftar linier, yang apabila nomor • tersebut dimasukkan ke dalam memori secara berangkai • akan didapat sebuah tabel. • Jika nomor-nomor telpon tersebut dimasukkan ke dalam • memori komputer, maka data tersebut akan tersimpan di • dalam tabel seperti di bawah ini dengan esensi bahwa • setiap record memuat paling banyak 20 lokasi memori.

  3. Stack (tumpukan) Stack / tumpukan adalah bentuk khusus dari list linier. Pada Stack operasi pemasukan dan penghapusan elemen hanya dapat dilakukan pada satu posisi, yaitu posisi akhir dari list. Posisi akhir tersebut disebut puncak (top) dari stack S, dan Dinyatakan dengan top(s). Sedangkan jumlah elemen yang ada pada stack dikenal Dengan istilah Noel dari stack S, dan dinyatakan dengan Noel(s).

  4. Bila stack S = [ S1, S2, … , ST ] maka Top(s) adalah ST, banyak elemen maka Noel(s) adalah T. Pada stack dikenal operasi penghapusan dan pemasukan. Untuk operator penghapusan elemen pada stack disebut POP, sedangkan operator pemasukan elemen disebut PUSH untuk lebih jelas kerja kedua operator tersebut, berikut contoh bermula dari stack hampa S = [ ] , yang digambarkan : Noel(s) = 0, Top(s) = tidak terdefinisi S Mula-mula Push elemen A, diperoleh stack S = [ A ] A Noel(s) = 1, Top(s) = A S

  5. Apabila kita Push elemen B, diperoleh stack S = [ A, B ] B Noel(s) = 2, Top(s) = B A S Lalu kita Push elemen C, diperoleh stack S = [ A, B, C ] C Noel(s) = 3, Top(s) = C B A S Kemudian kita Pop elemen C, maka stack S = [ A, B ] B Noel(s) = 2, Top(s) = B A S

  6. Kita juga bisa push 2 elemen D dan E, dan diperoleh hasil Stack S = [ A, B, D, E ] E Noel(s) = 4, Top(s) = E D dan seterusnya…. B A S Operasi pada stack bersifat LIFO yaitu Last In First Out. Seperti juga terlihat pada contoh diatas. Pada stack juga terdapat istilah Isempty yaitu menunjukkan kondisi stack True atau false. True bila stack sedang hampa/null, dan False bila stack tidak sedang kosong.

  7. Konversi Notasi Infiks menjadi Notasi Postfiks Aplikasi lain dari stack adalah pada kompilasi dari ekspresi dalam bahasa pemrograman tingkat tinggi. Kompiler harus mampu menyerahkan bentuk yang biasa, misalnya : (( A+B ) * C / D+E ^ F ) / G ; kesuatu bentuk yang dapat lebih mudah dipergunakan dalam pembentukan kode objek. Cara yang biasa kita lakukan dalam menulis ekspresi aritmetic seperti diatas, dikenal sebagai notasi infiks. Untuk operasi biner seperti menjumlah, membagi, mengurangi, mengalikan ataupun memangkatkan, operator tampil diantara dua operand, misalnya operator + tampil diantara operand A dan B pada operasi A+B. Stack dapat digunakan untuk mentransformasikan notasi infiksini menjadi notasi postfiks. Pada notasi postfiks kedua operand tampil ber- sama didepan operator, misalnya AB+ atau PQ* dsb…

  8. Kompiler akan lebih mudah menangani ekspresi dalam • notasi postfiks ini. • Berikut ini diberikan sebuah algoritma untuk mengubah • Notasi Infiks kedalam notasi postfiks. Sebuah stack • digunakan untuk keperluan ini. Ekspresi diamati satu persatu • dari kiri ke kanan. • Pada algoritma ini terdapat 4 aturan dasar, sebagai berikut : • Jika simbol adalah “ ( “ maka ia kita push kedalam stack • Jika simbol adalah “ ) “ pop dari stack elemen-elemen • stack sampai pertama kali kita pop simbol “ ( “. Semua • elemen stack yang dipop tersebut merupakan output, • kecuali “ ( “ tadi. • Jika simbol adalah sebuah operand, tanpa melakukan • perubahan elemen stack, operand tersebut langsung • merupakan output.

  9. Jika simbol adalah sebuah operator, maka jika top stack • adalah operator dengan level lebih tinggi atau sama, • maka elemen top kita pop, sekaligus keluar sebagai • output, dilanjutkan proses seperti ini sampai top meru – • pakan “ ( “ atau operator dengan level lebih rendah. • Kalau ini terjadi, operator ( yang diamati ) kita push ke • dalam stack. Biasanya ditambahkan simbol titik koma (;) • sebagai penutup ekspresi dalam keadaan ini, kita pop • semua elemen stack, sehingga stack menjadi hampa • Ada tiga level operator, yaitu : • Level tertinggi : pemangkatan (^) • Level menengah : perkalian (*) dan pembagian (/) • Level terendah : penjumlahan (+) dan pengurangan (-) • Ubahlah notasi infiks berikut menjadi notasi postfiks • ( ( A + B ) * ( C – D ) ) ;

  10. Notasi postfiksnya adalah : A B + C D - *

More Related