1 / 21

STRUKTUR DATA STACK

PERTEMUAN KE-5. STRUKTUR DATA STACK. Sekolah Tinggi Manajemen Informatika dan Komputer (STMIK) Palangka Raya. LINEAR LIST (Daftar Linier).

frayne
Download Presentation

STRUKTUR DATA 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. PERTEMUAN KE-5 STRUKTUR DATASTACK Sekolah Tinggi Manajemen Informatika dan Komputer (STMIK) Palangka Raya

  2. LINEAR LIST (Daftar Linier) • Daftar linier (Linear List) adalahsuatustruktur data umum yang terbentukdaribarisanhingga (yang terurut) darisatuan data, atau pun dari record. • Elemendaridaftar linier disebutsimpulataunode. • Daftarinidisebut linier karenasusunanelemennyaadalah linier, yaitubahwabagisetiapelemenselaluadaelemensetelahdansebelumnya, kecualipadaelemenpertamadanterakhir. • Banyaknyasimpuldalamsuatudaftar linier dapatberubah-ubah, berbedadengan array yang jumlahelemennyaselalutetap.

  3. Strukturmana yang Linier? A B C

  4. LINEAR LIST (Daftar Linier) • List linier A yang mengandung T elemenpadasuatusaatditulissebagai A = {A1,A2,A3,…,AT} • Jika T = 0 maka A disebut list hampaataunull list. • Penambahan (insert) elemenbaruataupenghapusan (delete) elemenbolehdilakukanpadasembarangposisi.

  5. STACK (Tumpukan) • Stack atau Tumpukan adalah bentuk khusus dari list linier (linear list) yang penambahan dan penghapusan elemennya hanya boleh melalui salah satu sisi. • Posisi untuk menambah dan menghapus elemen pada stack disebut TOP atau puncak. • Elemen pada puncak stack diacu dengan TOP(S). • Penambahan dan pengurangan elemen pada STACK menggunakan prinsip LIFO (Last In First Out).

  6. STACK (Tumpukan) • Stack atau Tumpukan adalah bentuk khusus dari list linier (linear list) yang penambahan dan penghapusan elemennya hanya boleh melalui salah satu sisi. • Posisi untuk menambah dan menghapus elemen pada stack disebut TOP atau puncak. • Elemen pada puncak stack diacu dengan TOP(S). Bila stack kosong, maka TOP(S) tidak terdefinisi. • Penambahan dan pengurangan elemen pada STACK menggunakan prinsip LIFO (Last In First Out).

  7. STACK (Tumpukan) • Operasi-operasi pada struktur data STACK: CREATE = pembentukan stack (alokasi memori) PUSH = menambah elemen baru POP = mengambil/menghapus elemen dari stack ISEMPTY = memeriksa apakah stack kosong • Fungsi-fungsi untuk operasi stack adalah TOP = menunjuk kepada elemen puncak pada stack jika stack kosong maka TOP(S) tidak terdefinisi NOEL = jumlah elemen dalam stack (Number Of ELements)

  8. STACK • CREATE(S) • NOEL(S) = 0 • TOP(S) tidak terdefinisi • Stack S = [] • PUSH elemen A • NOEL(S) = 1 • TOP(S) = A • Stack S = [A]

  9. STACK • PUSH elemen G • NOEL(S) = 2 • TOP(S) = G • Stack S = [A,G] • PUSH elemen K • NOEL(S) = 3 • TOP(S) = K • Stack S = [A,G,K]

  10. STACK • POP • NOEL(S) = 2 • TOP(S) = G • Stack S = [A,G] • PUSH elemen M • NOEL(S) = 3 • TOP(S) = M • Stack S = [A,G,M]

  11. STACK • PUSH elemen W • NOEL(S) = 4 • TOP(S) = W • Stack S = [A,G,M,W] • PUSH elemen F • NOEL(S) = 5 • TOP(S) = F • Stack S = [A,G,M,W,F]

  12. Aplikasi Stack • Stack sangat luas pemakaiannya dalam penyelesaian berbagai macam problem. Misalnya pada compiler, sistem operasi, dsb. • Kasus yang sering menggunakan stack adalah penjodohan tanda kurung (matching parentheses)

  13. Aplikasi Stack • Algoritma matching parentheses: Amati barisan elemen dari kiri ke kanan. Jika ditemukan parenthesis kiri, maka PUSH parenthesis kiri ke stack. Jika ditemukan parenthesis kanan, maka periksa apakah stack kosong. Jika ya  error, jika tidak, POP elemen dari stack. Jika penelusuran barisan elemen selesai tetapi stack tidak kosong  error.

  14. Aplikasi Stack • PembentukanNotasi Postfix • PembentukanNotasi Postfix bertujuanuntukmempermudahpembentukankodeobyekpadaproseskompilasibahasapemrogramantingkattinggi (high level programming language) • Notasi Postfix berartiposisi operator ditempatkansetelahoperan-operannya. infixpostfix Contoh: A + B  A B + (A+B)*C  A B + C * Y=M/(X+C)-F  Y M X C + / F - = Padanotasi postfix, tandakurungtidakdigunakan.

  15. Mengubah Infix  Postfix Ekspresi dibaca per karakter dari kiri ke kanan. Algoritma: • Jika dibaca tanda “(“ maka PUSH ke stack • Jika dibaca tanda “)” maka POP semua elemen dari stack sampai ditemukan tanda “(“ • Semua elemen yang di-POP ditulis kembali, kecuali tanda “(“ • Jika simbol adalah operan maka operan tersebut langsung di-output. • Jika dibaca simbol operator maka periksa apakah elemen TOP merupakan operator yang levelnya sama atau lebih tinggi, jika ya, POP dan output-kan operator dari stack. Lanjutkan proses ini sampai TOP adalah “(“ atau operator dengan level lebih rendah. Jika hal ini terjadi, operator yang diamati di PUSH

  16. Mengubah Infix  Postfix • Ada 3 level operator: level tertinggi : pemangkatan level menengah : perkalian (*), pembagian (/) level terendah : penjumlahan (+), pengurangan (-) • Operator dengan level lebih tinggi selalu diproses lebih dulu. Contoh : 3 + 4 * 5 = 3 + 20 = 23 12 / 3 + 3 = 4 + 3 = 7 1 – 2 * 3 + 4 / 2 + 7 = 1 – 6 + 2 + 7 = 4

  17. START Input E N  Len(E) i = 1 to N cc  E[i] Y cc = “(“ PUSH (cc) N Y cc = “)“ A N cc in [“0”..”9”] or cc in [“A”..”Z”] Y Output (cc) N cc in [“+”,”-”,”*”,”/”,”^”] Y B D N i >= N C N Y

  18. A B cc  POP TOP(S) Higher or Equal cc Y cc  POP cc = “(“ Y D N Output cc N PUSH (cc) Output cc D C N ISEMPTY(S) ERROR Y END

  19. Ubahlah ekspresi berikut menjadi notasi postfix ((A+B)*C/D+E^F)/G

  20. Infix  Postfix • Cara lain mengubah notasi infix menjadi postfix adalah dengan menggunakan struktur pohon. A + B A + B * C A * (B + C) + + * A B * + A A B B C C

  21. Infix  Postfix • Y = ((A+B)*C/D+E^F)/G = / Y + G / ^ * D E F + C A B

More Related