Stack Tumpukan
Stack Tumpukan
Top
C
B
A
Bottom
Example :
Kondisi awal Stack
Pop ( S )
B
A
Push ( S, A )
Push ( S, C )
Push ( S, B )
Pop ( S )
Push ( S, D )
Push ( S, C )
Push ( S, B )
Latihan :
Gambarkan keadaan stack utk operasi berikut
( diasumsikan keadaan awal stack kosong ), stack
dapat menampung max 4 elemen berupa data
NIM.
a. Tambahkan 2 no NIM ke dalam stack yaitu
( 0631521001 & 0631521002 )
b. keluarkan 1 elemen dari stack
c. Tambahkan 3 elemen berikutnya ke dalam stack
dg
data
(0631521003
&
0631521004
&
0631521005 )
Operasi PUSH :
procedure PUSH ( var T : Tumpukan; X : string );
begin
T.Atas :=T.Atas + 1;
T.Isi[T.Atas] := X
end;
procedure PUSH ( var T : Tumpukan; X : string );
begin
if T.Atas = MaxElemen then
writeln ( TUMPUKAN SUDAH PENUH )
else
begin
T.Atas :=T.Atas + 1;
T.Isi[T.Atas] := X
end
end;
Operasi POP :
Latihan :
2. (A + B) x (C (D ^ E))
3. (A x B) ( C + D ) / ( E x ( F G ) )
Langkah 0 ( Awal )
- Baca ungkapan dalam notasi infix, misalnya = S
- Tentukan panjang ungkapan tersebut, misalnya N karakter
- Siapkan sebuah tumpukan kosong & siapkan derajad
masing2 operator, misalnya :
^ pangkat = bernilai 3
x , / = bernilai 2
+ , - = bernilai 1
) , ( = bernilai 0
Langkah 1
Dimulai dari I=1 sampai N, kerjakan langkah2 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, tapi tidak
usah ditulis.
1. ( A + B ) x ( C D ) N = 11 karakter
Proses
ke
Karakter
dibaca ( R )
Isi Stack
Karakter
tercatat
Notasi
Postfix
terbentuk
AB
Kosong
AB+
(*
AB+C
10
AB+CD
11
AB+CD-
Kosong
AB+CD-*
+(
-(*
( K ^ ( L + M )) + ( N O ) N = 15 karakter
Proses
ke
Karakter dibaca
Isi Stack
^(
(^(
Karakter
tercatat
Notasi Postfix
terbentuk
KL
KLM
(^(
KLM +
((
KLM +^
KLM +^ N
KLM +^ NO
KLM +^ NO-
+(^(
10
Kosong
11
12
13
14
15
16
(+
-( +
(+
2. (A + B) * (C D) ^ E N = 13 karakter
Proses
ke
Karakter
dibaca ( R )
Isi Stack
Kosong
(*
10
11
12
13
Karakter
tercatat
Notasi
Postfix
terbentuk
AB
AB+
AB+C
AB+CD
AB+CD-
Kosong
AB+CD-*
AB+CD-*E
AB+CD-*E^
+(
-(*
^
Kosong
Postfix
1. AB*
2. CD3. 12*
4. AB*CD-*
LATIHAN :
1.
2.
A+B*CD^E
(A * B) ( C + D ) / ( E * ( F G ))
Langkah 0 ( Awal )
- Baca ungkapan dalam notasi infix, misalnya = S
- Tentukan panjang ungkapan tersebut, misalnya N karakter
- Siapkan sebuah tumpukan kosong & siapkan derajad
masing2 operator, misalnya :
$ pangkat = bernilai 3
x , / = bernilai 2
+ , - = bernilai 1
) , ( = bernilai 0
Langkah 1
Dimulai dari I=N sampai 1, kerjakan langkah2 berikut
a. R = S [ I ]
b. Test nilai R, jika R adalah :
operand : langsung ditulis & simpan ke var T
kurung tutup : push ke dalam tumpukan
kurung buka : pop dan tulis semua isi tumpukan sampai ujung
tumpukan = ). Pop juga tanda ) ini, tapi tidak
usah ditulis.
( A + B ) x ( C D ) N = 11 karakter
Pro
ses
ke
Karakter
dibaca ( R )
Isi Stack
Kosong
)*
10
11
12
13
Karakter
tercatat
Isi Variabel T
DC
DC-
DC-B
DC-BA
DC-BA+
Kosong
DC-BA+*
( Notasi Postfix )
Notasi Prefix
terbentuk
-)
+)*
*+AB-CD
SELESAIKAN :
(A + B) * (C D) ^ E
A*B(C+D)/(E*(FG))
Proses ke
Karakter dibaca ( R
)
Isi Stack
Karakter tercatat
Notasi Postfix
terbentuk
((
PQ
PQ
KOSONG
PQ-
PQ-R
KOSONG
PQ-R+
10
11
(X
12
PQ-R+S
13
14
PQ-R+ST
15
PQ-R+ST^
KOSONG
PQ-R+ST^*
PQ-R+ST^*U
PQ-R+ST^*UV
((/
PQ-R+ST^*UV/
KOSONG
PQ-R+ST^*UV//
PQ-R+ST^*UV//W
PQ-R+ST^*UV//W+
-( (
^(X
16
17
((
((/
18
19
20
21
22
23
24
/((/
+
KOSONG