A
Deklarasi Struktur Data
Maximum 5 Stack = Record
Isi [5]
4 Isi : array[1..n] of Tipe Data
Isi [4]
3 Atas : integer
Isi [3]
2 End
Isi [2]
1
Isi [1]
0
Stack S
Operasi
Operasi dasar yang dilakukan Dalam Stack ada dua yaitu :
1. Menambah Komponen (Push)
2. Menghapus Komponen (Pop)
Operasi Push
Operasi Push adalah Menambah elemen kedalam stack S, dimana penambahan
dapat dilakukan jika stack itu belum penuh.
Stack dikatakan penuh Jika posisi atas sudah berada pada posisi N
(If S.atas = n then stack penuh)
fi
Stack S
Push(x,s)
Procedure Push(x :Tipe
data, S : Stack)
If s.atas< n then
S.Atas = s.atas + 1
s.isi[s.atas] = x
Atas = 1
Else
stack sudah penuh
fi
Stack S
Push(x,s)
Procedure Push(x :Tipe
data, S : Stack)
If s.atas< n then
S.atas= s.atas+1
S.isi[S.atas] = k
Atas = 1
Else
stack sudah penuh
fi
Stack S
Push(x,s)
Procedure Push(x :Tipe
data, S : Stack)
If s.atas< n then
S.Atas = s.atas + 1 Atas = 2
s.isi[s.atas] = x
Else
stack sudah penuh
fi
Stack S
Push(x,s)
Procedure Push(x :Tipe
data, S : Stack)
If s.atas< n then
S.atas= s.atas+1 Atas = 2
S.isi[S.atas] = k
Else
stack sudah penuh
fi
Stack S
Push(x,s)
Procedure Push(x :Tipe
data, S : Stack)
Atas = 3
If s.atas< n then
S.Atas = s.atas + 1
s.isi[s.atas] = x
Else
stack sudah penuh
fi
Stack S
Push(x,s)
Procedure Push(x :Tipe
data, S : Stack)
Atas = 3
If s.atas< n then
S.atas= s.atas+1
S.isi[S.atas] = k
Else
stack sudah penuh
fi
Stack S
Push(x,s) Atas = 5
Stack S
POP(S)
Pop(s) adalah menghapus elemen dari stack, dimana elemen yang dihapus
adalah elemen yang terakhir Masuk (LIFO Last In First Out) atau elemen
penghapusan, dimana proses penghapusan dapat dilakukan jika stack tidak
dalam keadaan Kosong
Stack S
Pop(s)
Procedure Pop( S: Stack) Atas = 4
If S.atas>0 then
Write S.isi[S.atas]
S.Atas= S.Atas – 1
Else
Stack Kosong
Fi
Stack S
Pop(s)
Procedure Pop( S: Stack) Atas = 4
If S.atas>0 then
Write S.isi[S.atas]
S.Atas= S.Atas – 1
Else
Stack Kosong
Fi
Stack S
Pop(s)
Procedure Pop( S: Stack)
If S.atas>0 then Atas = 3
Write S.isi[S.atas]
S.Atas= S.Atas – 1
Else
Stack Kosong
Fi
Stack S
Pop(s)
Procedure Pop( S: Stack)
If S.atas>0 then
Write S.isi[S.atas]
S.Atas= S.Atas – 1
Else
Stack Kosong
Atas = 0
Fi
Stack S
Contoh Penggunaan Stack
1. Untuk mencek kalimat Polindrom
2. Untuk Mengubah Desimal ke Biner
Mencek Kalimat Polindrom
Kalimat : KAKAK
K
A A
K K K
A A A A
K K K K K
Operasi Push
Operasi Pop
K Hasil =‘’
A A Hasil = K
Hasil = KA
K K K Hasil = KAK
Hasil = KAKA
A A A A
Hasil = KAKAK
K K K K K
Kalimat = hasil
Operasi POP
Polindrom
Algoritma
Inisialisasi Struktur Data
Stack = record
isi : Array[1..255] of char
atas : integer
End
Kalimat, Hasil : string
Derajat Operator
(, ^ , * dan /,+ dan -
InfixA*B + C*D
Prefix Postfix
*AB + C * D AB* + C*D
*AB + *CD
AB* + CD*
+*AB*CD
AB*CD*+
Infix : A + B * (C – D) / E
Prefix Postfix
A + B * -CD / E A + B * CD- / E
A + *B-CD / E A + BCD-* / E
A + /*B-CDE A + BCD-*E/
+A/*B-CDE ABCD-*E/+
Contoh :
1. Infix (A+B)*C^D/E-F+G
2. Infix (A+B*C)*(D+E)/F*G
Stack Untuk Konversi Infix ke postfix
Algoritma
Langkah 0 : inisialisasi struktur data dengan membuat sebuah stack
kosong, baca ungkapan dalam bentuk infix, dan tentukan
derajat operator misalnya
( :0; + & - : 1;* & / : 2;^ : 3
Langkah 1 : Lakukan pembacaan karakter dari Infix, berikan ke R
Langkah 2 : Test Nilai R, Jika
a. ( Langsung di Push
b. Operand, Langsung di Tulis
c. ) lakukan Pop sampai ketemu buka
kurung ,
tetapi tanda kurung tidak perlu di
tulis.
d. Operator, Jika stack dalam keadaan
kosong atau derajat R lebih tinggi dibandingkan dengan di
ujung stack, lakukan Push, jika tidak lakukan POP.
Langkah 3 : Jika pembacaan terhadap infix sudah selesai, namun stack
belum kosong lakukan POP.
Contoh A+B*(C+D/E)