STRUKTUR DATA
INFORMATIKA
ITN MALANG
STACK (Tumpukan)
Pertemuan 6
STACK
DEFINISI STACK
Stack (tumpukan) adalah suatu bentuk khusus dari linear list
(himpunan terurut), dimana operasi penyisipan dan
penghapusan atas elemen-elemennya hanya dapat dilakukan
pada satu sisi saja yang disebut sebagai “TOP”.
Misal diberikan Stack S sebagai berikut :
S = [ S1, S2, .........., ST ] maka TOP(S) = ST.
Contoh :
sebuah stack S = [A,B,C,D], maka stack S ini dapat digambarkan
sebagai berikut :
OPERASI DASAR PADA STACK
Ada empat operasi dasar yang didefinisikan pada stack, yaitu :
1. CREATE(stack) berfungsi untuk membuat stack kosong
2. ISEMPTY(stack) berfungsi berfungsi untuk menentukan apakah
suatu stack adalah stack kosong. Operasinya akan bernilai
boolean
3. PUSH(elemen,stack) Operator ini berfungsi untuk
menambahkan satu elemen ke dalam stack
4. POP(stack) Operator ini berfungsi untuk mengeluarkan satu
elemen dari dalam stack
PEMANFAATAN STACK
Salah satu bentuk aplikasi stack adalah mengubah suatu ekspresi
aritmatik (infix) 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.
Perhatikan contoh dari notasi infix dan postfix berikut ini :
Infix Postfix
16 / 2 16 2 /
(2+14)*5 2 14 + 5 *
2+14*5 2 14 5 * +
(6-2)*(5+4) 6 2 – 5 4 +*
Urutan (prioritas) dari operator adalah :
[Link] (^)
[Link] (*) atau Pembagian (/)
[Link] (+) atau Pengurangan (-)
Aturan yang digunakan dalam proses transformasi tersebut
adalah :
[Link] aritmatik yang diberikan di- "Scan" dari kiri ke kanan.
[Link] simbol yang di-scan adalah "(", maka simbol tersebut di push
ke dalam stack.
[Link] simbol yang di-scan adalah ")", maka seluruh isi stack di pop
keluar mulai dari simbol "(" yang pertama ditemukan dalam stack.
[Link] simbol adalah operator, maka dilakukan perbandingan dulu
dengan simbol (operator) yang berada pada posisi top dalam
stack.
[Link] derajatnya setara atau lebih rendah dari simbol yang berada
pada posisi top, maka top stack di-pop keluar sebagai output dan
simbol yang baru di-push ke dalam stack.
[Link] derajatnya lebih tinggi dari simbol yang berada pada posisi
top, maka simbol (operator) yang di-scan tersebut di-push ke
dalam stack.
[Link] simbol yang di-scan adalah operand, maka simbol tersebut
langsung sebagai output.
[Link] simbol adalah ";" maka seluruh isi stack di-pop sebagai
output.