STACK Kuliah Struktur Data Pascal
Definisi Adalah tumpukan data yang seolah-olah ada data di atas data lain. data yang terakhir terakhir kali dimasukkan akan pertama kali keluar dari stack tersebut. Stack dapat diimplementasikan sebagai representasi berkait atau kontigu (dengan tabel fix) Ciri-Ciri Stack : 1.Elemen TOP (puncak) diketahui 2.penyisipan dan penghapusan elemen selalu dilakukan di TOP 3. LIFO ( Last In First Out) Contoh : 5. Guntur, 4. aditya, 3.Tyas, 2.Hendra, 1.Dyah Data nomor 1 datang/masuk duluan, data nomor 5 yang paling atas yang keluar terlebih dahulu. Suatu metode untuk Input dan hapus di dalam memori komputer
LIFO Jika ingin mengambil 90, maka harus melakukan POP untuk 37 dan 12 terlebih dahulu kemudian POP untuk 90
Pemanfaatan Stack : Perhitungan ekspresi aritmatika (posfix) algoritma back traking (runut balik) algoritma rekursif
Algoritma Input/tambah data Jika ada input maka no stack/no tumpukan yang semula 0 akan tambah 1 demi 1 sampai maksimal tumpukan. Pengambilan data Jika ada pengambilan data maka data dipindahkan di variabel lain contohnya tempat Dan posisi tumpukann yang semula maksimal akan berkurang 1 demi 1 sampai posisi 0 kembali.
Operasi pada STACK CREATE FULL Membuat stack baru yang masih kosong. Procedure create; Begin Stack.top:=0; End; FULL Untuk memeriksa apakah stack sudah penuh atau belum. Fuction full:bolean; Stack.top:=max;
PUSH Menambah sebuah elemen ( data ) kedalam stack (Syarat: tidak bisa dilakukan jika stack sudah penuh) Stack.data:=input; End; Procedure push ( input:string ); Begin If not full then Stack.top:=stack.top;
POP Mengambil elemen teratas dari stack. Syarat: Stack tidak boleh kosong. Procedure Pop ( elemen:string ); Begin If not empty then Elemen:=stack.data; Stack.top:=top – 1; End;
Inputan Awal Program Pengambilan Memastikan posisi tumpukan kosong Element yang terambil belum ada Inputan Dipastikan tumpukan belum penuh Menginput satu persatu Pengambilan Dipastikan tumpukan tidak kosong Pengambilan satu persatu atau lebih dari satu (optional)
PENGGUNAAN/APLIKASI STACK Logika stack digunakan untuk menyelesaikan berbagai macam masalah. Antara lain digunakan pada compiler, operating system dan dalam program-program aplikasi lain Berikut ini tiga buah contoh aplikasi stack, yaitu MATCHING PARENTHESES NOTASI POSTFIX PROSES REKURSIF
MATCHING PARENTHESES Proses ini dilakukan compiler untuk memeriksa kelengkapan tanda kurung yang terdapat pada suatu ekspresi aritmetik Sedangkan stack di sini digunakan sebagai tempat prosesnya
NOTASI POSTFIX mengubah suatu ekspresi aritmatik (string) ke dalam notasi postfix Notasi postfix ini digunakan oleh compiler untuk menyatakan suatu ekspresi aritmatik dalam bahasa tingkat tinggi (high level language) Stack digunakan oleh compiler untuk mentransformasikan ekspresi aritmatik menjadi suatu ekspresi dalam bentuk/notasi postfix
diberikan ekspresi aritmatik : A + B Contoh : diberikan ekspresi aritmatik : A + B Maka bentuknya dalam notasi postfix menjadi : AB+ Urutan (prioritas) dari operator adalah 1. Perpangkatan (^) 2. Perkalian (*) atau Pembagian (/) 3. Penjumlahan (+) atau Pengurangan (-)
PROSES REKURSIF Rekursi mempunyai arti suatu proses yang bias memanggil dirinya sendiri. Dalam sebuah rekursi sebenarnya tekandung pengertian sebuah prosedur atau fungsi Perbedaannya dengan prosedur adalah bahwa rekursi bisa memanggil dirinya sendiri, kalau prosedur atau fungsi harus diipanggil melalui pemanggil prosedur atau fungsi