26
Stack Stack (Tumpukan) (Tumpukan)

Stack (Tumpukan)

Embed Size (px)

DESCRIPTION

Stack (Tumpukan). Definisi. Kumpulan data yang seolaholah diletakkan di atas data yang lain. Operasi penambahan (penyisipan) dan pengambilan (penghapusan) prinsip pengolahannya adalah last-in first-out (LIFO). Ilustrasi Tumpukan. OPERASI PADA TUMPUKAN. Ada 2 operasi dasar tumpukan - PowerPoint PPT Presentation

Citation preview

Page 1: Stack (Tumpukan)

StackStack(Tumpukan)(Tumpukan)

Page 2: Stack (Tumpukan)

DefinisiDefinisi

• Kumpulan data yang seolaholah diletakkan di atas data yang lain.

• Operasi penambahan (penyisipan) dan pengambilan (penghapusan)

• prinsip pengolahannya adalah last-in first-out (LIFO).

Page 3: Stack (Tumpukan)

Ilustrasi TumpukanIlustrasi Tumpukan

Page 4: Stack (Tumpukan)

OPERASI PADA TUMPUKAN

• Ada 2 operasi dasar tumpukanAda 2 operasi dasar tumpukan1. Menyisipkan data (push)2. Menghapus data (pop)

Page 5: Stack (Tumpukan)

Operasi Push

• Perintah push digunakan untuk memasukkan data ke dalam tumpukan.

Page 6: Stack (Tumpukan)

Operasi Pop

• Operasi pop adalah operasi untuk menghapus elemen

• Terletak pada posisi paling atas dari sebuah tumpukan

Page 7: Stack (Tumpukan)

OPERASI PADA STACK – OPERASI PADA STACK – Cont.Cont.

1. 1. buat stack (stack) - buat stack (stack) - createcreate• membuat sebuah stack baru yang membuat sebuah stack baru yang

masih kosongmasih kosong• spesifikasi:spesifikasi:

– tujuan : mendefinisikan stack yang kosongtujuan : mendefinisikan stack yang kosong– input : stackinput : stack– syarat awal : tidak adasyarat awal : tidak ada– output stack : - (kosong)output stack : - (kosong)– syarat akhir : stack dalam keadaan kosongsyarat akhir : stack dalam keadaan kosong

Page 8: Stack (Tumpukan)

OPERASI PADA STACK – OPERASI PADA STACK – Cont.Cont.

2. 2. stack kosong (stack) - stack kosong (stack) - emptyempty• fungsi untuk menentukan apakah stack fungsi untuk menentukan apakah stack

dalam keadaan kosong atau tidakdalam keadaan kosong atau tidak• spesifikasi:spesifikasi:

– tujuan : mengecek apakah stack dalam tujuan : mengecek apakah stack dalam keadaan kosongkeadaan kosong

– input : stackinput : stack– syarat awal : tidak adasyarat awal : tidak ada– output : booleanoutput : boolean– syarat akhir : stack kosong bernilai true jika syarat akhir : stack kosong bernilai true jika

stack dalam keadaan kosongstack dalam keadaan kosong

Page 9: Stack (Tumpukan)

OPERASI PADA STACK – OPERASI PADA STACK – Cont.Cont.

3. 3. stack penuh (stack) - stack penuh (stack) - fullfull• fungsi untuk memeriksa apakah stack fungsi untuk memeriksa apakah stack

yang ada sudah penuhyang ada sudah penuh• spesifikasi:spesifikasi:

– tujuan : mengecek apakah stack dalam tujuan : mengecek apakah stack dalam keadaan penuhkeadaan penuh

– input : stackinput : stack– syarat awal : tidak adasyarat awal : tidak ada– outpuoutputt : boolean : boolean– syarat akhir : stack penuh bernilai true jika syarat akhir : stack penuh bernilai true jika

stack dalam keadaan penuhstack dalam keadaan penuh

Page 10: Stack (Tumpukan)

OPERASI PADA STACK – OPERASI PADA STACK – Cont.Cont.

44. . pushpush (stack, info baru) (stack, info baru)• menambahkan sebuah elemen kedalam menambahkan sebuah elemen kedalam

stack.stack.• spesifikasi:spesifikasi:

– tujuan : menambahkan elemen, info baru tujuan : menambahkan elemen, info baru pada stack pada posisi paling ataspada stack pada posisi paling atas

– input : stack dan Info baruinput : stack dan Info baru– syarat awal : stack tidak penuhsyarat awal : stack tidak penuh– output : stackoutput : stack– syarat akhir : stack bertambah satu elemensyarat akhir : stack bertambah satu elemen

Page 11: Stack (Tumpukan)

OPERASI PADA STACK – OPERASI PADA STACK – Cont.Cont.

5.5. poppop (stack, info pop) (stack, info pop)• mengambil elemen teratas dari stackmengambil elemen teratas dari stack• spesifikasi:spesifikasi:

– tujuan : mengeluarkan elemen dtujuan : mengeluarkan elemen dariari stack stack yang berada pada posisi paling atasyang berada pada posisi paling atas

– input : stackinput : stack– syarat awal : stack tidak kosongsyarat awal : stack tidak kosong– output : stack dalam info popoutput : stack dalam info pop– syarat akhir : stack berkurang satu syarat akhir : stack berkurang satu

elemenelemen

Page 12: Stack (Tumpukan)

CONTOH CONTOH PEMANFAATAN PEMANFAATAN STACKSTACK

• Notasi Infix PrefixNotasi Infix Prefix• Notasi Infix PostfixNotasi Infix Postfix

Pemanfaatan stack antara lain untuk menulis ungkapan Pemanfaatan stack antara lain untuk menulis ungkapan dengan menggunakan notasi tertentu. dengan menggunakan notasi tertentu.

Contoh :Contoh :( A + B ) * ( C – D )( A + B ) * ( C – D )Tanda kurung selalu digunakan dalam penulisan ungkapan Tanda kurung selalu digunakan dalam penulisan ungkapan

numeris untuk mengelompokkan bagian mana yang akan numeris untuk mengelompokkan bagian mana yang akan dikerjakan terlebih dahulu.dikerjakan terlebih dahulu.

Dari contoh ( A + B ) akan dikerjakan terlebih dahulu, Dari contoh ( A + B ) akan dikerjakan terlebih dahulu, kemudian baru ( C – D ) dan terakhir hasilnya akan kemudian baru ( C – D ) dan terakhir hasilnya akan dikalikan.dikalikan.

A + B * C – DA + B * C – DB * C akan dikerjakan terlebih dahulu, hasil yang didapat B * C akan dikerjakan terlebih dahulu, hasil yang didapat

akan berbeda dengan hasil notasi dengan tanda kurung.akan berbeda dengan hasil notasi dengan tanda kurung.

Page 13: Stack (Tumpukan)

Notasi PrefixNotasi Prefix

• CCara penulisan ungkapan numerisara penulisan ungkapan numeris..• “ “ Notasi Polish “ atau “ Notasi Notasi Polish “ atau “ Notasi

Prefix” Prefix” • artinya : Operator ditulis sebelum artinya : Operator ditulis sebelum

kedua operand yang akan disajikan.kedua operand yang akan disajikan.

Page 14: Stack (Tumpukan)

Algoritma Infix Ke Algoritma Infix Ke Prefix :Prefix :

• Langkah 0Langkah 0::• Baca ungkapan dalam notasi infix, Baca ungkapan dalam notasi infix,

misalnya S;misalnya S;– Tentukan panjang ungkapan tersebut, Tentukan panjang ungkapan tersebut,

misalnya N;misalnya N;– Siapkan sebuah tumpukan kosong dan Siapkan sebuah tumpukan kosong dan

siapkan derajat masing – masing operator. siapkan derajat masing – masing operator. – Misalnya : * dan / berderajat 2, + dan – Misalnya : * dan / berderajat 2, + dan –

berderajat 1 dan ( berderajat 0 ).berderajat 1 dan ( berderajat 0 ).

Page 15: Stack (Tumpukan)

• Langkah 1:Langkah 1:– Dimulai dari I : N sampai 1, kerjakan Dimulai dari I : N sampai 1, kerjakan

langkah – langkah berikut :langkah – langkah berikut :– R = S ( I )R = S ( I )– Test nilai R . Jika R adalah :Test nilai R . Jika R adalah :

• Operand Operand : Langsung ditulis: Langsung ditulis• Kurung bukaKurung buka : Pop dan tulis semua isi : Pop dan tulis semua isi

tumpukan sampai ujung tumpukan = tumpukan sampai ujung tumpukan = ‘)‘,‘)‘, pop juga tanda ini tetapi tidak perlu pop juga tanda ini tetapi tidak perlu ditulis .ditulis .

Page 16: Stack (Tumpukan)

– Kurung tutupKurung tutup : Push kedalam tumpukan: Push kedalam tumpukan– OperatorOperator : Jika tumpukan kosong, atau derajat : Jika tumpukan kosong, atau derajat

R lebih tinggiR lebih tinggi dibanding derajat ujungdibanding derajat ujung tumpukan, tumpukan, push operatorpush operator kedalam tumpukan. Jika tidak pop kedalam tumpukan. Jika tidak pop ujung tumpukan danujung tumpukan dan tulis, kemudian ulangi tulis, kemudian ulangi perbandingan R dengan ujung perbandingan R dengan ujung tumpukan, tumpukan, lalu R di push.lalu R di push.

• Langkah 2Langkah 2: Jika akhir notasi infix telah : Jika akhir notasi infix telah tercapai dan tumpukan masih belum kosong,tercapai dan tumpukan masih belum kosong, pop semua isi tumpukan dan tulis hasilnya.pop semua isi tumpukan dan tulis hasilnya.

Page 17: Stack (Tumpukan)

Notasi Infix PrefixNotasi Infix Prefix

Contoh :Contoh :

Proses konversi dari infix ke prefix :Proses konversi dari infix ke prefix :

= ( A + B ) * ( C – D )= ( A + B ) * ( C – D )

= [ + A B ] * [ - C D ]= [ + A B ] * [ - C D ]

= * [ + A B ] [ - C D ]= * [ + A B ] [ - C D ]

= * + A B - C D= * + A B - C DInfix Prefix

A + B + A B A + B – C - + A B C ( A + B ) * ( C – D ) * + A B – C D

Page 18: Stack (Tumpukan)

• Contoh notasi prefix dari notasi Contoh notasi prefix dari notasi infix :infix :

• InfixInfix PrefixPrefix• A + BA + B + A B+ A B• A + B – CA + B – C - + A B C- + A B C• ( A + B ) * ( C – D )( A + B ) * ( C – D ) * + A B – * + A B –

C DC D

Page 19: Stack (Tumpukan)

Notasi PostfixNotasi Postfix

• KKebalikan notasi prefix ebalikan notasi prefix • LLebih dikenal dengan Notasi Polish ebih dikenal dengan Notasi Polish

Terbalik ( Reverse Polish Notation Terbalik ( Reverse Polish Notation atau RPN). atau RPN).

• Dalam hal ini operator ditulis Dalam hal ini operator ditulis sesudah operand. sesudah operand.

Page 20: Stack (Tumpukan)

Algoritma Infix Ke Algoritma Infix Ke Postfix :Postfix :

• Langkah 0Langkah 0::• Baca ungkapan dalam notasi infix, Baca ungkapan dalam notasi infix,

misalnya S;misalnya S;– Tentukan panjang ungkapan tersebut, Tentukan panjang ungkapan tersebut,

misalnya N;misalnya N;– Siapkan sebuah tumpukan kosong dan Siapkan sebuah tumpukan kosong dan

siapkan derajat masing – masing operator. siapkan derajat masing – masing operator. – Misalnya : * dan / berderajat 2, + dan – Misalnya : * dan / berderajat 2, + dan –

berderajat 1 dan ( berderajat 0 ).berderajat 1 dan ( berderajat 0 ).

Page 21: Stack (Tumpukan)

• Langkah 1:Langkah 1:– Dimulai dari I : 1 sampai N, kerjakan Dimulai dari I : 1 sampai N, kerjakan

langkah –langkah berikut :langkah –langkah berikut :– R = S ( I )R = S ( I )

Page 22: Stack (Tumpukan)

• Test nilai R . Jika R adalah :Test nilai R . Jika R adalah :– Operand Operand : Langsung ditulis: Langsung ditulis– Kurung bukaKurung buka : Push kedalam tumpukan: Push kedalam tumpukan– Kurung tutupKurung tutup : Pop dan tulis semua isi : Pop dan tulis semua isi

tumpukan sampai ‘(‘, pop juga tumpukan sampai ‘(‘, pop juga tanda ini tetapi tanda ini tetapi tidak perlu ditulistidak perlu ditulis

– OperatorOperator : Jika tumpukan kosong, atau : Jika tumpukan kosong, atau derajat R lebih tinggiderajat R lebih tinggi dibanding derajat ujung dibanding derajat ujung tumpukan, push operatortumpukan, push operator kedalam tumpukan. Jika kedalam tumpukan. Jika tidak pop ujung tumpukan dantidak pop ujung tumpukan dan tulis, kemudian tulis, kemudian ulangi perbandingan R dengan ujung ulangi perbandingan R dengan ujung tumpukan, lalu R di push.tumpukan, lalu R di push.

• Langkah 2Langkah 2: Jika akhir notasi infix telah : Jika akhir notasi infix telah tercapai dan tumpukan masih belum kosong,tercapai dan tumpukan masih belum kosong,

– pop semua isi tumpukan dan tulis hasilnya.pop semua isi tumpukan dan tulis hasilnya.

Page 23: Stack (Tumpukan)

Notasi Infix PostfixNotasi Infix Postfix

Contoh :Contoh :Proses konversi Proses konversi dari infix ke postfix :dari infix ke postfix := ( 6 - 2 ) * ( 5 + 4 )= ( 6 - 2 ) * ( 5 + 4 )= [ 6 2 - ] * [ 5 4 + ]= [ 6 2 - ] * [ 5 4 + ]= [ 6 2 - ] [ 5 4 + ] *= [ 6 2 - ] [ 5 4 + ] *= 6 2 - 5 4 + *= 6 2 - 5 4 + *

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 + *

Page 24: Stack (Tumpukan)

Contoh : Ubah ekspresi A+B*C+(D+E)*F ke Contoh : Ubah ekspresi A+B*C+(D+E)*F ke dalam notasi dalam notasi postfixpostfix dengan menggunakan dengan menggunakan algoritma Dijkstraalgoritma DijkstraMasukanMasukan KeluaranKeluaran STACKSTACK

A+B*C+A+B*C+(D+E)*F(D+E)*F

+B*C++B*C+(D+E)*F(D+E)*F

B*C+B*C+(D+E)*F(D+E)*F

*C+*C+(D+E)*F(D+E)*F

C+C+(D+E)*F(D+E)*F

++(D+E)*F(D+E)*F

(D+E)*F(D+E)*F

D+E)*FD+E)*F

+E)*F+E)*F

E)*FE)*F

)*)*FF

*F*F

FF

kosongkosong

kosongkosong

AA

AA

ABAB

ABCABC

ABC*+ABC*+

ABC*+ABC*+

ABC*+DABC*+D

ABC*+DABC*+D

ABC*+DEABC*+DE

ABC*+DE+ABC*+DE+

ABC*+DE+ABC*+DE+

ABC*+DE+FABC*+DE+F

ABC*+DE+F*+ABC*+DE+F*+

kosongkosong

kosongkosong

++

++

+*+*

+*+*

++

+(+(

+(+(

+(++(+

+(++(+

++

+*+*

kosongkosong

Page 25: Stack (Tumpukan)

Contoh :Contoh :

Penggunaan notasi postfix dalam stack, misal Penggunaan notasi postfix dalam stack, misal : :

2 14 + 5 * = 802 14 + 5 * = 80push 2 pop 14 push 5 pop 5 pop 80 push 14 pop 2 pop 16 push 2 +

14 push 16

* 5

14 5 2 16 16 80

Page 26: Stack (Tumpukan)

The EndThe End