Chapt 04 : Stack Oleh : Yuli Praptomo PHS, S.Kom

Slides:



Advertisements
Presentasi serupa
BAB V TUMPUKAN (STACK) Tertia Avini, S. Kom tertiaavini. wordpress
Advertisements

STRUKTUR DATA array stack dan queue
STACK (Tumpukan) Tumpukan Koin Tumpukan Kotak.
Rahmat Deddy Rianto Dako, ST, M.Eng
Pertemuan 5 STACK atau TUMPUKAN IMAM SIBRO MALISI NIM :
Struktur Organisasi Data 2
Stack (Tumpukan) Sumber Kepustakaan : putuputraastawa.files.wordpress.com/.../pert_5_sta...
Algoritma dan Struktur Data
STACK (Tumpukan).
STACK.
STACK.
Struktur Data (Data Structure) – IS 2313
STRUKTUR DATA (4) Array Stack(Tumpukkan) dan Queue (Antrian)
PERTEMUAN KE-5 Kamis, 7 Oktober Pemetaan Trianguler Array ABCDE FGHI JKL MN O A B C D E F G H I J K L M N O T(1,1)  S(1)T(2,1)  S(N+1) T(1,2)
Struktur Data Stack.
Stack (Tumpukan).
STACK.
Reverse Polish Notation (RPN)
Algorithm and Data Structures.
PRAKTIKUM STRUKTUR DATA STACK SULIDAR FITRI, M.Sc MARCH, 2014.
STRUKTUR DATA (4) array stack dan queue
Pertemuan 5 STACK & QUEUE
Apakah Stack itu ?. Apakah Stack itu ? Pengertian STACK Secara sederhana diartikan dengan : sebagai tumpukan dari benda sekumpulan data yang seolah-olah.
BAB 3 STACK (TUMPUKAN).
STACK.
Pertemuan 8 Stack dengan Array
Stack Pertemuan 11.
NAMA : siti hajar NIM : UNIT : b NO.hp : 0852 –
Stack.
STACK ( TUMPUKAN ) Fajrizal.
Sapta Candra Miarsa,S.T.,M.T.
STRUKTUR DATA IMPLEMENTASI STACK.
STRUKTUR DATA IMPLEMENTASI STACK.
STACK (Tumpukan) Tumpukan Koin Tumpukan Kotak.
Tumpukan dalam struktur data
Defri Kurniawan ADT STACK Defri Kurniawan
STRUKTUR DATA STACK.
Abstract Data Type (ADT) and Stack Array
Stack Stack atau tumpukan adalah suatu stuktur data yang penting dalam pemrograman Bersifat LIFO (Last In First Out) Benda yang terakhir masuk ke dalam.
STACK (Tumpukan) Tumpukan Koin Tumpukan Kotak.
STACK Denny Agustiawan,M.pd
STACK (Tumpukan).
STRUKTUR DATA : STACK Sri marini.st.
STRUKTUR DATA IMPLEMENTASI STACK.
Stack (Tumpukan) Sumber Kepustakaan : putuputraastawa.files.wordpress.com/.../pert_5_sta...
STRUKTUR DATA Chapt 5 : QUEUE Oleh : Yuli Praptomo PHS, S.Kom.
SEMANTIKS Pertemuan Ke-3.
Rahmat Deddy Rianto Dako, ST, M.Eng
STRUKTUR DATA STACK.
STACK (Tumpukan).
STACK Rohimah, S.Kom..
STACK Yohana Nugraheni.
STRUKTUR DATA IMPLEMENTASI STACK.
STRUKTUR DATA STACK.
Algoritme dan Stuktur Data
STRUKTUR DATA IMPLEMENTASI STACK.
Stack.
STACK HARJANTO SUTEDJO.
QUEUE (Antrian) #Kulia 6 Algoritma dan Struktur Data.
STRUKTUR DATA version STMIK AMIKOM YOGYAKARTA
STRUKTUR DATA IMPLEMENTASI STACK.
STRUKTUR DATA STACK.
STRUKTUR DATA Stack atau Tumpukan.
STRUKTUR DATA IMPLEMENTASI STACK.
STACK Rohimah, S.Kom..
STACK.
STRUKTUR DATA (3) STACK.
Contoh Implementasi Stack 1
STACK (Tumpukan) Tumpukan Koin.
Defri Kurniawan ADT STACK Defri Kurniawan
Transcript presentasi:

Chapt 04 : Stack Oleh : Yuli Praptomo PHS, S.Kom STRUKTUR DATA Chapt 04 : Stack Oleh : Yuli Praptomo PHS, S.Kom

STACK Stack adalah suatu tumpukan dari benda. Stack adalah suatu kumpulan data yang seolah-olah ada data yang diletakkan di atas data lain. Satu hal yang perlu diingat adalah bahwa kita bisa menambahkan (menyisipkan) data, mengambil (menghapus) data lewat ujung yang sama, yang disebut sebagai ujung atas tumpukan (top of stack). Konsep utamanya adalah LIFO (Last In First Out), benda yang terakhir masuk dalam stack akan menjadi benda pertama yang dikeluarkan dari stack.

Keadaan mula-mula Setelah ditumpuk adalah kosong

Pada gambar di atas, jika kita ingin mengambil sesuatu dari tumpukan maka kita harus mengambil benda paling atas dahulu, yakni compo. Misalnya jika VCD langsung diambil, compo akan jatuh. Prinsip stack ini bisa diterapkan dalam pemrograman. Di C++, ada dua cara penerapan prinsip stack, yakni dengan array dan linked list.

Setidaknya stack haruslah memiliki operasi-operasi sebagai berikut : Push Untuk menambahkan item pada tumpukan paling atas Pop Untuk mengambil item teratas Clear Untuk mengosongkan stack IsEmpty Untuk memeriksa apakah stack kosong IsFull Untuk memeriksa apakah stack sudah penuh Retreive Untuk mendapatkan nilai dari item teratas

Stack dengan Array Sesuai dengan sifat stack, pengambilan / penghapusan di elemen dalam stack harus dimulai dari elemen teratas.

Operasi-operasi pada Stack dengan Array IsFull Fungsi ini memeriksa apakah stack yang ada sudah penuh. Stack penuh jika puncak stack terdapat tepat di bawah jumlah maksimum yang dapat ditampung stack atau dengan kata lain : Top = MAX_STACK -1

Push Fungsi ini menambahkan sebuah elemen ke dalam stack dan tidak bisa dilakukan lagi jika stack sudah penuh. IsEmpty Fungsi menentukan apakah stack kosong atau tidak. Tanda bahwa stack kosong adalah Top bernilai kurang dari nol.

Pop Fungsi ini mengambil elemen teratas dari stack dengan syarat stack tidak boleh kosong. Clear Fungsi ini mengosongkan stack dengan cara mengeset Top dengan -1. Jika Top bernilai kurang dari nol maka stack dianggap kosong. Retreive Fungsi ini untuk melihat nilai yang berada pada posisi tumpukan teratas.

Contoh Program

Stack dengan Single Linked List Selain implementasi stack dengan array seperti telah dijelasnkan sebelumnya, ada cara lain untuk mengimplementasi stack dalam C++, yakni dengan single linked list. Keunggulannya dibandingkan array tebtu saja adalah penggunaan alokasi memori yang dinamis sehingga menghindari pemborosan memori.

Misalnya saja pada stack dengan array disediakan tempat untuk stack berisi 150 elemen, sementara ketika dipakai oleh user stack hanya diisi 50 elemen, maka telah terjadi pemborosan memori untuk sisa 100 elemen, yang tak terpakai. Dengan penggunaan linked list maka tempat yang disediakan akan sesuai dengan banyaknya elemen yang mengisi stack. Oleh karena itu pula dalam stack dengan linked list tidak ada istilah full, sebab biasanya program tidak menentukan jumlah elemen stack yang mungkin ada (kecuali jika sudah dibatasi oleh pembuatnya). Namun demikian sebenarnya stack ini pun memiliki batas kapasitas, yakni dibatasi oleh jumlah memori yang tersedia.

Contoh Program

PENULISAN UNGKAPAN NUMERIS Salah satu pemanfaatan tumpukan adalah untuk menulis ungkapan menggunakan notasi tertentu. Seperti kita ketahui, dalam penulisan ungkapan, khususnya ungkapan numeris, kita selalu menggunakan tanda kurung untuk mengelompokkan bagian mana yang harus dikerjakan lebih dahulu.

Sebagai contoh, dalam ungkapan: (A + B) * (C - D) suku (A + B ) akan dikerjakan lebih dahulu, kemudian suku ( C - D ) , dan terakhir mengalikan hasil yang diperoleh dari dua suku ini.

Sedangkan pada ungkapan: A + B * C - D maka B * C akan dikerjakan lebih dahulu, diikuti yang lain. Dalam hal ini pemakaian tanda kurung akan sangat mempengaruhi hasil akhir. Cara penulisan ungkapan sering disebut dengan notasi infix, yang artinya adalah bahwa operator ditulis di antara dua operand.

Dalam ungkapan-ungkapan yang rumit, pemakaian tanda kurung ini tidak bisa dihindari. Semakin rumit suatu ungkapan semakin banyak dibutuhkan tanda kurung. Hal ini membawa suatu konsekuensi bahwa penulisan tanda kurung itupun harus benar-benar terhindar dari kesalahan.

kemudian dikembangkan satu cara penulisan ungkapan numeris yang selanjutnya disebut notasi Polish atau notasi prefix, yang artinya adalah bahwa operator ditulis sebelum kedua operand yang akan disaji-kan.

Berikut disajikan beberapa contoh notasi prefix dari notasi infix (simbol $ adalah simbol perpangkatan): Infix Prefix A + B + A B A+ B- C -+ A B C (A + B) * (C - D) * + A B - C D A - B / (C * D $ E) /- A B * C $ D E

Secara sederhana, proses konversi dari infix menjadi prefix dijelaskan sebagai berikut. Misalnya ungkapan yang akan dikonversi-kan adalah: (A + B) * ( C - D) Dengan menggunakan tanda kurung bantuan, ungkapan di atas kita ubah enjadi: (+A B) * (- C D)

Jika [- A B] kita misalkan P, dan [- C D) kita misalkan Q, maka ungkapan di atas bisa ditulis sebagai: P * Q Selanjutnya, notasi infix di atas kita ubah menjadi notasi prefix * P Q Dengan mengembalikan P dan Q pada notasinya semula dan menghapus tanda kurung bantuan, kita peroleh notasi prefix dari persamaan (A + B ) * (C - D ) , yaitu: * + A B - C D

Notasi lain, yang merupakan kebalikan notasi prefix, adalah notasi postfix atau notasi suffix, atau lebih dikenal dengan notasi Polish Terbalik (Reverse Polish Notation atau RPN). Dalam hal ini operator ditulis sesudah operand. Sama halnya dengan notasi prefix, maka dalam notasi postfix inipun tidak diperlukan adanya tanda kurung pengelompokan.

Proses konversi dari notasi infix ke notasi postfix juga sama dengan konversi dari infix ke prefix. Sebagai contoh, ungkapan: (A + B) * (C - D) Dengan kurung bantuan kita peroleh: [A B +] * [C D -]

Kemudian dengan memisalkan [ A B + ] sebagai P, dan [ C D - ] sebagai Q, dan kemudian dilakukan konversi dan substitusi kembali, kita peroleh notasi postfix untuk ungkapan di atas, yaitu: A B + C D - * Dalam hal inipun urutan penulisan operator juga menentukan operasi mana yang harus dikerjakan lebih dahulu. Pada halaman ber-ikut disajikan beberapa contoh lain hasil konversi notasi infix menjadi postfix. Infix Postfix A + B – C A B + C – ( A + B ) * ( C – D ) A B + C D - * A – B / ( C * D $ E ) A B - C D E $ * /

Algoritma INFIX ke POSTFIX Langkah 0 Baca ungkapan dalam notasi infix, misal S; Tentukan panjang ungkapan tersebut, misalnya N karakter; Siapkan sebuah tumpukan kosong dan siapkan derajad masing-masing operator, $ berderajad 3, / dan * berderajad 2, + dan - berderajad 1, ( berderajad 0.

Langkah 1 Dimulai dari I = 1 sampai N kerjakan langkah-langkah 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, tetapi tidak usah ditulis. operator : jika tumpukan kosong, atau derajad R lebih tinggi dibanding derajad ujung tumpukan, push operator ke dalam tumpukan. Jika tidak, pop ujung tum-pukan dan tulis; kemudian ulangi pembandingan R dengan ujung tumpukan. Kemudian R di push. ( Catatan :kurung buka di dalam tumpukan dianggap mempunyai derajad yang lebih rendah dibanding R.)

Langkah 2 Jika akhir notasi infix telah tercapai, dan tumpukan masih belum kosong, pop semua isi tumpukan dan tulis hasilnya.

( A + B ) / (( C – D ) * E $ F )

Proses ke Karakter Dibaca Isi Tumpukan Tercetak Notasi Postfix Yang Terbentuk 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ( A + B ) / C - D * E $ F + ( / ( / ( ( - / ( ( ( / * ( / $ * ( / A B A B + A B + C A B + C D A B + C D - A B + C D – E A B + C D – E F A B + C D – E F $ A B + C D – E F $ * A B + C D – E F $ * /

Chapt 04 selesai . . .