stack atau tumpukan

46
stack ==tumpukan== Tenia wahyuningrum st3 telkom purwokerto

Upload: tenia-wahyuningrum

Post on 14-Jun-2015

279 views

Category:

Technology


1 download

DESCRIPTION

Membahas tentang tumpukan/stack dalam struktur data, serta penerapannya dalam mengecek kata/kalimat palindrom, juga penerapannya dalam mengubah notasi matematika infix menjadi prefix dan postfix.

TRANSCRIPT

Page 1: Stack atau tumpukan

stack ==tumpukan=

=

Tenia wahyuningrumst3 telkom purwokertowww.st3telkom.ac.id

Page 2: Stack atau tumpukan

Stacks everywhere ...

Page 3: Stack atau tumpukan

definisi...

“A stack is an ordered collection of items into which new items may be inserted and from which items may be deleted at one end, called top of the stack”

* Yedidyah L, Moshe J. A., and Aaron M. Tenenbaum; Data Structures Using C and C++

Page 4: Stack atau tumpukan

definisi... “Secara sederhana, tumpukan bisa diartikan sebagai suatu kumpulan data yang seolah-olah ada data yang diletakan diatas data yang lain.”

Page 5: Stack atau tumpukan

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)

Page 6: Stack atau tumpukan

LIFO ( Last In First Out )

“data yang disimpan terakhir akan diambil lebih dahulu, data yang disimpan pertama kali akan diambil paling akhir”

Page 7: Stack atau tumpukan

operasi stack...

Page 8: Stack atau tumpukan

dcba

push

edcba

e

mula-mula setelah ditumpuk

“Menyisipkan / menambahkan data pd ujung atas stack”

Page 9: Stack atau tumpukan

dcba

pop

edcba

e

mula-mula setelah tumpukan diambil

“Menghapus / mengeluarkan data dr ujung atas stack”

Page 10: Stack atau tumpukan

Kode progra

m

Page 11: Stack atau tumpukan

deklarasi

#define max 10

struct Tumpukan{int atas;int data[max];}T;

Page 12: Stack atau tumpukan

int penuh(){if(T.atas==max-1) return 1; else return 0; }

void awal(){T.atas=-1; }

int kosong(){if(T.atas== -1) return 1; else return 0; }

nilai awal

Page 13: Stack atau tumpukan

pushvoid push(int data){if(kosong()==1) {T.atas++; T.data[T.atas]=data; cout<<"Data "<<T.data[T.atas]<<" masuk ke stack";}

else if(penuh()==0) {T.atas++; T.data[T.atas]=data; cout<<"Data "<<T.data[T.atas]<<" masuk ke stack";}

else cout<<"Tumpukan penuh"; }

Page 14: Stack atau tumpukan

Mula-mula stack kosong

T.atas = -1Return = 1

push

Page 15: Stack atau tumpukan

pop

void pop(){ if(kosong()==0){ cout<<"Data teratas sudah terambil"; T.atas--; } else cout<<"Data kosong"; }

Page 16: Stack atau tumpukan

T.atas –

T.Atas dikurangi 1

pop

Page 17: Stack atau tumpukan

void tampil(){if(kosong()==0) {for(int i=T.atas;i>=0;i--) {cout<<"\nTumpukan ke "<<i<<"="<<T.data[i];}

} else cout<<"Tumpukan kosong"; }

Page 18: Stack atau tumpukan

tampil • Dicetak mulai dari

tumpukan teratas, lalu sampai tumpukan terbawah

Page 19: Stack atau tumpukan

Penerapan stack

Page 20: Stack atau tumpukan

Palindrom

“sebuah kata, frasa, angka maupun

susunan lainnya yang dapat dibaca dengan sama baik dari depan maupun belakang (spasi antara huruf-huruf biasanya diperbolehkan)”

* Kata "palindrom" berasal dari bahasa Yunani: palin ("balik") dan dromos ("pacuan kuda").

Page 22: Stack atau tumpukan

Mengecek Kalimat Polindrom

Kalimat : KAKAK

K

A

KKA

K

K

A

K

A

K

A

K

A

K

Operasi Push

Page 23: Stack atau tumpukan

Operasi Pop

K

A

K

K

A

K

A

K

A

K

A

K K

A

K

Hasil =‘’

Hasil = KHasil = KAHasil = KAKHasil = KAKAHasil = KAKAK

Jika Kalimat = hasil

Palindrom

Page 24: Stack atau tumpukan

Ungkapan Aritmatika

Untuk menuliskan ungkapan aritmatika dapat dilakukan dengan tiga metode :

infix, prefix, postfix

Page 25: Stack atau tumpukan
Page 26: Stack atau tumpukan

Derajat operator () ----- tanda kurung ^ ----- pangkat * dan / ----- kali dan bagi + dan - ------ tambah dan kurang

Page 27: Stack atau tumpukan

Infix A*B + C*D

Prefix*AB + C * D*AB + *CD+*AB*CD

PostfixAB* + C*D

AB* + CD*

AB*CD*+

Page 28: Stack atau tumpukan

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

PrefixA + B * -CD / EA + *B-CD / EA + /*B-CDE+A/*B-CDE

PostfixA + B * CD- / EA + BCD-* / EA + BCD-*E/ABCD-*E/+

Page 29: Stack atau tumpukan

Langkah manual

infix-prefix-postfix

Page 30: Stack atau tumpukan

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

Page 31: Stack atau tumpukan
Page 32: Stack atau tumpukan
Page 33: Stack atau tumpukan

LaTIHan di KeLas !

Contoh :

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

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

Page 34: Stack atau tumpukan

Menggunakan stack

infix-prefix-postfix

Page 35: Stack atau tumpukan

• Stack adalah tumpukan (jadi, memori diibaratkan dengan tumpukan) yang memiliki cara kerja, “yang pertama masuk ke kotak, maka akan terakhir kali diambil kembali” atau “first in last out”.

Page 36: Stack atau tumpukan

Langkah-langkah

Page 37: Stack atau tumpukan
Page 38: Stack atau tumpukan
Page 39: Stack atau tumpukan
Page 40: Stack atau tumpukan
Page 41: Stack atau tumpukan
Page 42: Stack atau tumpukan
Page 43: Stack atau tumpukan
Page 44: Stack atau tumpukan
Page 45: Stack atau tumpukan

TUGAS

• Buatlah program untuk mengecek kata palindrom menggunakan stack !

• Buatlah program untuk mengubah / konversi notasi infix ke postfix !

Page 46: Stack atau tumpukan

good bye !