4. STACK
Bersifat LIFO ( Last In First Out).
Benda yang terakhir masuk ke dalam stack akan menjadi yang pertama keluar dari stack
Karaktetistik
1. Elemen : item-item data di elemen stack
2. Top : elemen puncak dari stack
3. Jumlah elemen pada stack
4. Status/ kondisi stack
Kondisi Stack
1. Penuh: elemen mencapai kapasitas maksimum. penambahan elemen menyebabkan kondisi kesalahan overflow.
2. Kosong: bila tidak ada elemen di stack. tidak mungkin dilakukan pengambilan elemen. Pengambilan elemen menyebabkan kondisi kesalahan underflow.
Stack Representasi Statis
• Biasanya diimementasikan dengan menggunakan Array.
•Karena itu, stacm dengan representasu statis dapat mengalamu kondisi elemen penuh.
Stack Representasi Dinamis
•Biasanya diimplementasikan dengan menggunakan pointer yang menunjuk pada elemen elemen yang dialokasikan pada memori.
•Elemen ditambahkan akan menggunakan penambahan elemen pada awal stack (addfirst).
•Saat pengambilan atau penghapusan elemen menggunakan penghapusan di awal stack (delfirst)
Operator di dalam stack:
operasi PUSH: operasi menambahkan elemen baru pada sebuah stack.
•Aturan:
Sebagai kondisi awal ada sebuah stack yang telah memiliki beberapa elemen dengan elemen paling atas sebagai top.
Dibuat sebuah elemen baru yang akan dimasukkan ke dalam stack
operasi POP: operasj mengambil sebuah elemen dari sebuah stack.
•Aturan:
Sebagai kondisi awal ada sebuah stack yang telah memiliki beberapa elemen dengan elemen paling atas sebagai top.
Penunjuk top menjadi menunjuk elemen di bawah elemen atas.
Elemen atas diambil dari stack
Create
Operator ini berfungsi untuk membuat sebuah stack kosong.
Isempty
•Operator ini berfungsi untuk menentukan apakah suatu stack adalah stack kosong.
IsFull
•Operator ini berfungsi untuk menentukan apakah suatu stack adalah stack penuh.
Penggunaan Stack
Pengujian kalimat palindrome, penguji tanda kurung (matching parentheses), dan juga berfungsi sebagai konversi dari notasi infix menjadi notasi postfix.
Matching parentheses
• Proses ini dilakukan compiler untuk meriksa kelengkapan tanda kurung yang terdapat pada suatu ekspresi aritmetik. Sedangkan stack di sini digunakan sebagai tempat prosesnya.
•Algoritma yang digunakan adalah:
1.Elemen-elemen suatu ekspresi aritmetik (string) di Scan dari kiri ke kanan.
2. Jika ditemukan simbol "(" atau "Left parenthesis", maka simbol tersebut di push ke dalam stack.
NOTASI INFIX DAN POSTFIX
•Postfix
Mengubah suatu ekspresi aritmatik (string) ke dalam notasi postfix. Notasi postfix digunakan oleh compiler untuk menyatakan suatu ekspresi aritmatik dalam bahasa tingkat tinggi. Stack digunakan oleh compiler untuk mentransformasikan ekspresi aritmatik menjadi suatu ekspresi dalam bentuk/notasi postfix
Contoh:
•A+B;
•AB+
•3+2*5=325*+
•(A+B)*(C-D) /E; =AB+*CD-E/
•((A+B)*C/D+E^F)/G=
Urutan prioritas
1.()
2. Perpangkatan (^)
3.Perkalian (*) atau pembagian (/)
4. Penjumlahan (+) atau Pengurangan (-)
Aturan:
dari kiri ke kanan

Komentar
Posting Komentar