0% menganggap dokumen ini bermanfaat (0 suara)
301 tayangan21 halaman

Stack Tumpukan

1. Stack adalah kumpulan data yang disusun secara LIFO (last in first out) dimana data baru ditambahkan di atas data lama dan data diambil dari bagian atas.

Diunggah oleh

ImamMuhajir
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PPTX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
301 tayangan21 halaman

Stack Tumpukan

1. Stack adalah kumpulan data yang disusun secara LIFO (last in first out) dimana data baru ditambahkan di atas data lama dan data diambil dari bagian atas.

Diunggah oleh

ImamMuhajir
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PPTX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 21

STACK ( TUMPUKAN )

Stack ( Tumpukan ) dapat diartikan sbg :


Suatu kumpulan data yang seolah-olah ada data yg
diletakkan diatas data yg lain, yg bisa menyisipkan
( menambah ) data serta mengambil ( menghapus data ).
Cara penggambaran stack :
D

Top

C
B
A

Bottom

Operasi yg dpt dilakukan dalam stack :


1. Menyisipkan / menambahkan data pd ujung atas stack
push
2. Menghapus / mengeluarkan data dr ujung atas stack
pop
Prinsip kerja stack adalah LIFO ( Last In First Out )

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 )

Penyajian awal Stack :


Dalam Pascal dikenal type data terstruktur yg disebut ARRAY
(LARIK). Dapat digunakan u menyajikan sebuah tumpukan.
Tapi penyajian dg mengg. ARRAY adalah kurang tepat karena
banyaknya elemen dalam array adalah statis.
Sedangkan dalam tumpukan, banyaknya elemen dapat
bervariasi ( dinamis ).
Meskipun demikian, ARRAY dapat digunakan u menyajikan
sebuah tumpukan dg anggapan bahwa banyaknya elemen
max dari tumpukan tsb tidak akan melebihi batas max
banyaknya elemen dalam array.
Pada saat ukuran tumpukan = ukuran array, jika
ditambahkan data baru akan menyebabkan OVERFLOW.
Dengan demikian perlu adanya data tambahan u mencatat
posisi ujung atas tumpukan.

Dengan kebutuhan ini, penyajian tumpukan dapat dilakukan


dengan menggunakan type data terstruktur yang lain yaitu
RECORD ( Rekaman ) yg terdiri dari 2 field :
- Field 1 Digunakan u menyimpan elemen tumpukan yg
bertype array
- Field 2 Digunakan u mencatat posisi atas ujung
tumpukan.
Deklarasi STACK secara umum :
const MaxElemen =255;
type Tumpukan = record
Isi : array[1..MaxElemen] of string;
atas : 0..MaxElemen
end;
var T : Tumpukan;

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 :

procedure POP ( var T : Tumpukan);


begin
T.Atas :=T.Atas - 1
end;
procedure POP ( var T : Tumpukan);
begin
if T.Atas = 0 then
writeln ( TUMPUKAN SUDAH KOSONG )
else
begin
T.Atas :=T.Atas - 1
end
end;

PENULISAN UNGKAPAN NUMERIS DALAM STACK


Salah satu aplikasi STACK adalah untuk menulis ungkapan
dengan menggunakan notasi tertentu.
Cara penulisan ungkapan dapat dilakukan dengan
menggunakan :
1. Notasi INFIX
Operator diletakkan diantara 2 operand
ex : A+B dimana A,B sbg operand dan + sbg operator
2. Notasi PREFIX ( POLISH )
Operator diletakkan sebelum 2 operand disajikan
ex : +AB
3. Notasi POSTFIX ( SUFFIX )
operator diletakkan setelah 2 operand disajikan
ex : AB+

Dalam penulisan ungkapan, khususnya ungkapan numeris


seringkali digunakan tanda kurung u mengelompokkan bagian
mana yg harus dikerjakan lebih dahulu.
Dalam ungkapan2 yg rumit, pemakaian tanda kurung ini tidak bisa
dihindari.
Semakin rumit ungkapan maka semakin banyak dibutuhkan
tanda kurung .
Hal ini membawa suatu konsekwensi bahwa penulisan tanda
kurung itupun harus benar2 terhindar dari kesalahan.
Contoh : ( dalam notasi infix ) DG METODE SUBSTITUSI
1. A + B x C
Notasi Prefix
Notasi Postfix
xBC 1
BCx 1
1
+A1 2
A1+ 2
2

Latihan :
2. (A + B) x (C (D ^ E))
3. (A x B) ( C + D ) / ( E x ( F G ) )

Algorithma Konversi dari Infix ke Postfix

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.

operator : jika tumpukan kosong, atau derajad R


lebih tinggi dibanding derajad ujung
tumpukan, push operator ke dalam
tumpukan.
Jika tidak, pop ujung
tumpukan da tulis,
kemudian ulangi
pembandingan R ujung
tumpukan.
Kemudian R di push.
Langkah 2
Jika akhir notasi infix telah tercapai, dan tumpukan masih
belum kosong, pop semua isi tumpukan dan tulis hasilnya.

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

Cara Substitusi : Infix


( A x B ) x ( C D )1. A*B
22. C-D
1
3. 1*2
3

Postfix
1. AB*
2. CD3. 12*
4. AB*CD-*

LATIHAN :
1.
2.

A+B*CD^E
(A * B) ( C + D ) / ( E * ( F G ))

Algorithma Konversi dari Infix ke Prefix

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.

operator : jika tumpukan kosong, atau derajad R


lebih tinggi atau sama dibanding
derajad ujung tumpukan, push
operator
ke dalam tumpukan. Jika
tidak, pop ujung
tumpukan dan tulis
disimpan ke var T, kemudian
ulangi
pembandingan R ujung tumpukan.
Kemudian R di push.
Langkah 2
Jika akhir notasi infix telah tercapai, dan tumpukan masih
belum kosong, pop semua isi tumpukan dan tulis hasilnya,
kemudian simpan ke var T.
Langkah 3
Baca data dalam variabel T, dimulai dari N sampai 1 dan
tulis ke dalam notasi prefix.

( 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

Anda mungkin juga menyukai