STACK (Tumpukan)

31
STACK (Tumpukan) Tumpukan Koin Tumpukan Kotak

description

STACK (Tumpukan). Tumpukan Kotak. Tumpukan Koin. Defenisi :. - PowerPoint PPT Presentation

Transcript of STACK (Tumpukan)

Page 1: STACK  (Tumpukan)

STACK (Tumpukan)

Tumpukan Koin Tumpukan Kotak

Page 2: STACK  (Tumpukan)

Defenisi : Secara sederhana, tumpukan bisa diartikan sebagai suatu

kumpulan data yang seolah-olah ada data yang diletakan diatas data yang lain. Satu hal yang perlu kita ingat adalah bahwa kita bisa menambah (menyisipkan) data, dan mengambil (menghapus) data lewat ujung yang sama, yang disebut sebagai ujung atas tumpukan (top of stack).

Untuk menjelaskan pengertian diatas kita ambil contoh sebagai berikut. Misalnya kita mempunyai dua buah kotak yang kita tumpuk, sehingga kotak kita letakkan diatas kotak yang lain. Jika kemudian tumpukan duah buah kotak itu kita tambah dengan kotak ketiga, keempat dan seterusnya, maka akan kita peroleh sebuah tumpukan kotak yang terdiri dari N kotak.

Page 3: STACK  (Tumpukan)

A

BC

DDari gambar ini kita bisa mengatakan bahwa kotak B ada diatas kotak A dan ada dibawah kotak C. Gambar dibawah ini hanya menunjukkan bahwa dalam tumpukan kita hanya bisa menambah atau mengambil sebuah kotak lewat satu ujung, yaitu ujung bagian atas

Page 4: STACK  (Tumpukan)

Maximum 5

4

3

2

1

0

Stack S

Isi [1]

Isi [2]

Isi [3]

Isi [4]

Isi [5]

Deklarasi Struktur Data

Stack = Record

Isi : array[1..n] of Tipe Data

Atas : integer

End

Page 5: STACK  (Tumpukan)

Operasi Operasi dasar yang dilakukan Dalam Stack ada dua yaitu :

1. Menambah Komponen (Push)

2. Menghapus Komponen (Pop)

Operasi PushOperasi 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)

Push( x,s) adalah Memasukkan x kedalam Stack S

Page 6: STACK  (Tumpukan)

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

Else

stack sudah penuh

fi

Stack S

Atas = 0

Page 7: STACK  (Tumpukan)

Push(x,s)

Procedure Push(x :Tipe data, S : Stack)

If s.atas< n then

s.isi[s.atas] = x

Else

stack sudah penuh

fi

Stack S

Atas = 1

S.Atas = s.atas + 1

Page 8: STACK  (Tumpukan)

Push(x,s)

Procedure Push(x :Tipe data, S : Stack)

If s.atas< n then

S.atas= s.atas+1

Else

stack sudah penuh

fi

Stack S

Atas = 1S.isi[S.atas] = k

Page 9: STACK  (Tumpukan)

Push(x,s)

Procedure Push(x :Tipe data, S : Stack)

If s.atas< n then

s.isi[s.atas] = x

Else

stack sudah penuh

fi

Stack S

Atas = 2S.Atas = s.atas + 1

Page 10: STACK  (Tumpukan)

Push(x,s)

Procedure Push(x :Tipe data, S : Stack)

If s.atas< n then

S.atas= s.atas+1

Else

stack sudah penuh

fi

Stack S

Atas = 2

S.isi[S.atas] = k

Page 11: STACK  (Tumpukan)

Push(x,s)

Procedure Push(x :Tipe data, S : Stack)

If s.atas< n then

s.isi[s.atas] = x

Else

stack sudah penuh

fi

Stack S

Atas = 3

S.Atas = s.atas + 1

Page 12: STACK  (Tumpukan)

Push(x,s)

Procedure Push(x :Tipe data, S : Stack)

If s.atas< n then

S.atas= s.atas+1

Else

stack sudah penuh

fi

Stack S

Atas = 3

S.isi[S.atas] = k

Page 13: STACK  (Tumpukan)

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

Else

fi

Stack S

Atas = 5

stack sudah penuh

Page 14: STACK  (Tumpukan)

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

If S.Atas > 0 then stack tidak kosong

Dimana Setiap melakukan penghapusan, maka posisi yang paling atas akan berkurang 1 (S.Atas = S.Atas -1)

Procedure Pop( S: Stack)

If S.atas>0 then

Write S.isi[S.atas]

S.Atas= S.Atas – 1

Else

Stack Kosong

Fi

Page 15: STACK  (Tumpukan)

Pop(s)

Procedure Pop( S: Stack)

If S.atas>0 then

Write S.isi[S.atas]

S.Atas= S.Atas – 1

Else

Stack Kosong

Fi

Stack S

Atas = 5

Page 16: STACK  (Tumpukan)

Pop(s)

Procedure Pop( S: Stack)

If S.atas>0 then

Write S.isi[S.atas]

S.Atas= S.Atas – 1

Else

Stack Kosong

Fi

Stack S

Atas = 4

Page 17: STACK  (Tumpukan)

Pop(s)

Procedure Pop( S: Stack)

If S.atas>0 then

Write S.isi[S.atas]

S.Atas= S.Atas – 1

Else

Stack Kosong

Fi

Stack S

Atas = 4

Page 18: STACK  (Tumpukan)

Pop(s)

Procedure Pop( S: Stack)

If S.atas>0 then

Write S.isi[S.atas]

S.Atas= S.Atas – 1

Else

Stack Kosong

Fi

Stack S

Atas = 3

Page 19: STACK  (Tumpukan)

Pop(s)

Procedure Pop( S: Stack)

If S.atas>0 then

Write S.isi[S.atas]

S.Atas= S.Atas – 1

Else

Stack Kosong

Fi

Stack S

Atas = 0

Page 20: STACK  (Tumpukan)

1. Untuk mencek kalimat Polindrom

2. Untuk Mengubah Desimal ke Biner

Contoh Penggunaan Stack

Page 21: STACK  (Tumpukan)

Mencek Kalimat Polindrom

Kalimat : KAKAK

K

A

KKA

K

K

A

K

A

K

A

K

A

K

Operasi Push

Page 22: STACK  (Tumpukan)

Operasi Pop

K

A

K

K

A

K

A

K

A

K

A

K K

A

K

Operasi POP

Hasil =‘’

Hasil = KHasil = KAHasil = KAKHasil = KAKAHasil = KAKAK

Kalimat = hasil

Polindrom

Page 23: STACK  (Tumpukan)

AlgoritmaInisialisasi Struktur Data Stack = record isi : Array[1..255] of char atas : integerEndKalimat, Hasil : string

Procedure push( x : Char, s : Stack)If s.atas < 255 Then s.atas = s.atas+1

s.isi[s.atas] = xElse

stack sudah penuhfi

Page 24: STACK  (Tumpukan)

Procedure Pop(S:Stack)If S.atas>0 then

Write s.isi[s.atas]Hasil = hasil +s.isi[s.atas]s.atas= s.atas-1

Else Stack Kosong

Fi//modul utamai=1While i<= length(kalimat)Do

Push(Kalimat[i],s)i=i+1

E-while

While S.atas>0 do

pop(s)

E-while

If kalimat = hasil

Then

Polindrom

Else

Tidak polindrom

fi

Page 25: STACK  (Tumpukan)

Tugas Buat Algoritma dan Program Untuk

Mengkonversi Bilangan desimal menjadi bilangan Biner.

Page 26: STACK  (Tumpukan)

Ungkapan Aritmatika

Untuk menuliskan ungkapan aritmatika dapat dilakukan dengan tiga metode

Infix Operan Operator Operan

A + B

Prefix Operator Operan Operan

+ A B

Postfix Operan Operan Operator

A B +

Page 27: STACK  (Tumpukan)

Contoh :

1.Infix A + B + C

Prefix

+AB + C

++ABC

Postfix AB+ + C

AB+C+

2. Infix A+B * C

Prefix

A+*BC

+A*BC

Postfix A+ BC*

ABC*+

Derajat Operator

(, ^ , * dan /,+ dan -

Page 28: STACK  (Tumpukan)

InfixA*B + C*D

Prefix*AB + C * D

*AB + *CD

+*AB*CD

Postfix

AB* + C*D

AB* + CD*

AB*CD*+

Page 29: STACK  (Tumpukan)

Infix : A + B * (C – D) / E

Prefix

A + B * -CD / E

A + *B-CD / E

A + /*B-CDE

+A/*B-CDE

Postfix

A + B * CD- / E

A + BCD-* / E

A + BCD-*E/

ABCD-*E/+

Contoh :

1. Infix (A+B)*C^D/E-F+G

2. Infix (A+B*C)*(D+E)/F*G

Page 30: STACK  (Tumpukan)

Stack Untuk Konversi Infix ke postfixAlgoritmaLangkah 0 : inisialisasi struktur data dengan membuat sebuah stack

kosong, baca ungkapan dalam bentuk infix, dan tentukan derajat operator misalnya

( : 0 ; + & - : 1;* & / : 2;^ : 3Langkah 1 : Lakukan pembacaan karakter dari Infix, berikan ke R

Langkah 2 : Test Nilai R, Jikaa. ( Langsung di Pushb. Operand, Langsung di Tulisc. ) 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.

Page 31: STACK  (Tumpukan)

Contoh A+B*(C+D/E)