Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

STACK (TUMPUKAN). Tujuan ► Mempelajari tipe data stack dan bagaimana menggunakan 4 fungsi dasar : push, pop, is_empty dan is_full. ► Mempelajari bagaimana.

Presentasi serupa


Presentasi berjudul: "STACK (TUMPUKAN). Tujuan ► Mempelajari tipe data stack dan bagaimana menggunakan 4 fungsi dasar : push, pop, is_empty dan is_full. ► Mempelajari bagaimana."— Transcript presentasi:

1 STACK (TUMPUKAN)

2 Tujuan ► Mempelajari tipe data stack dan bagaimana menggunakan 4 fungsi dasar : push, pop, is_empty dan is_full. ► Mempelajari bagaimana mengimplementasikan stack dengan array. ► Penggunaan stack untuk beberapa aplikasi, seperti mengecek palindrome, mengecek kesesuaian tanda kurung dan mengevaluasi ekspresi matematika.

3 STACK (TUMPUKAN) ► Kumpulan items yang teratur dimana items baru akan dimasukkan ke dan sebuah items akan dikeluarkan dari satu ujung yang sama, yaitu dari TOP sebuah stack. ► Struktur data linier dimana hanya bagian TOP-nya saja yang bisa diakses. ► Bersifat LIFO = Last In First Out. ► Bisa diimplementasikan menggunakan array atau Linked List.

4 Struktur Data ► Algoritma yang efektif dan efisien memerlukan pengetahuan yang komprehensif tentang struktur data. ► Pemilihan struktur data yang sesuai merupakan kunci untuk mengembangkan algoritma yang baik.

5 Hirarki Struktur Data

6 Pengertian ► Tipe data  Sekumpulan obyek yang memiliki kriteria tertentu ► Struktur data  Sekumpulan variabel dari tipe data yang sama atau berbeda ► Tipe data abstrak  Struktur data dan operasi-operasinya

7 Penggunan Stack ► History pada web browser. ► Undo Log pada text editor. ► Pemrosesan struktur bersarang (nested loop), rekursi, fungsi, dll. ► Algoritma back tracking – Artificial Intelegence

8 Operasi Dasar Stack ► Push :memasukkan sebuah item baru ke dalam stack. ► Pop : mengeluarkan sebuah item dari stack. ► Operasi lain : Is_Empty, Is_Full, Show Note : pop dan push dilakukan melalui ujung yang sama (TOP)

9 Contoh 1. Inisialisasi : top=-1 2. Push ‘A’ : top= A Push ‘B’ : top=1 4. Push ‘C’ top=2 B A B C A

10 Contoh 5. Pop : top=1 6. Pop : top=0 B A A Push ‘E’ top=1 E A

11 Visualisasi Operasi Stack X A E X A B X A TOP remove: “POP” TOP insert ‘B’: PUSH ‘B’ TOP D K D K P D K P O D K P D K DD T D T R D T R W D T R W Y abcdefg hij

12 Deklarasi Struktur Data Stack #define maxsize 100 // mendefinisikan maks ukuran data // dlm stack typedef struct { inttop;// indeks TOP charitems [ maxsize ]; // array } stack; // nama tipe data baru yg dibuat // adalah stack

13 Deklarasi Fungsi-Fungsi Stack ► void initialize ( stack *s) ► void pop ( stack *s, char *x ) ► void push ( stack *s, char x ) ► void show ( stack *s ) ► int Is_Empty(stack *s) ► int Is_Full(stack *s)

14 Fungsi Initialize void initialize ( stack *s) // operasi initialize dg parameter // s bertipe pointer stack { s -> top = -1; // top = -1  stack dlm kondisi empty }

15 Fungsi Push void push ( stack *s, char x ) { if (s->top == maxsize-1) // stack is full printf("\nERROR: the stack is full!"); else { s->top = s->top + 1; s->items [ s->top ] = x; printf("\nPUSH SUCCEED"); }}

16 Fungsi Pop void pop ( stack *s, char *x ) { if (s->top top < 0) // stack is empty printf("\nERROR: the stack is empty!"); else { *x = (s->items [ s->top ]); s->top = s->top - 1; printf("\nPOP SUCCEED"); }}

17 Fungsi Show void show( stack *s ) { printf("\nISI STACK :\n"); for(int i=s->top; i>=0; i--) printf("\t%c\n", s->items[i]); printf("\n");}

18 Fungsi Is_Empty Int Is_Empty(stack *s) {if(s->top==-1)return(1);elsereturn(0);}

19 Fungsi Is_Full Int Is_Full(stack *s) {if(s->top==maxsize-1)return(1);elsereturn(0);}

20 Fungsi Main void main() { stack *my_stack, s; char item, *x; my_stack = &s; x = &item; initialize(my_stack); push(my_stack, 'A'); push(my_stack, 'R'); push(my_stack, 'I'); push(my_stack, 'F'); show(my_stack); pop(my_stack, x); pop(my_stack, x); show(my_stack); show(my_stack);}

21 Output Program

22 Aplikasi 1 : Pengecekan Tanda Kurung

23 Algoritma valid = true s = the_empty_stack while ( we_have_not_read_the_entire_string ) {read the next symbol (symb) of the string if ( symb == ‘(‘ || symb == ‘[‘ || symb == ‘{‘ ) push ( s, symb ) if ( symb == ‘)‘ || symb == ‘]‘ || symb == ‘}‘ ) if ( empty ( s ) ) valid = false else {k = pop ( s ) if ( k is_not_the_matching_opener_of_symb ) valid = false } // end else } // end while if ( ! empty ( s ) ) valid = false if ( valid ) output ( “the string is valid” ) else output ( “the string is not valid” )

24 Contoh Cek apakah string di bawah ini valid! 1. (a+b)} 2. (h-(j-(k-[l-n])) 3. {x+(y-[a+b])*c-[(d+e)]}

25 Aplikasi 2 : Konversi Infix ke Postfix

26 Ekspresi Aritmatika ► Ekspresi aritmatika umumnya ditulis dalam bentuk infix. ► Contoh : A+BA-C+BA+((B*C)/D) ► Komputer lebih mudah mengevaluasi ekspresi postfix, karena tidak perlu mengelompokkan subekspresi kedalam tanda kurung.

27 Infix, Postfix, dan Prefix InfixPostfixPrefix A*BAB**AB A*(B+C)ABC+**A+BC (A*B)+CAB*C++*ABC A+((B*C)/D)ABC*D/++A/*BCD (A^2+B^2)*(C-D)A2^B2^+CD-**+^A2^B2-CD

28 Algoritma String infix, postfix s = stack kosong while (seluruh infix belum dibaca) { baca simbol selanjutnya pada infix (symb) if symb adalah operand tambahkan pada postfix else if symb adalah ‘(‘, ‘{‘, ‘[‘ PUSH symb else if symb adalah ‘)‘, ‘}‘, ‘]‘ while(TopOp stack adalah operator) POP stack dan tambahkan ke postfix POP stack else if symb adalah operator{ if stack kosong PUSH symb ke stack else{ TopOp =baca data di TOP stack if(symb>TopOp) PUSH symb ke stack else if TopOp adalah ‘(‘, ‘{‘, ‘[‘ PUSH symb ke stack else { POP stack dan tambahkan pada postfix PUSH symb ke stack }}}} if stack tidak kosong POP stack dan tambahkan ke postfix

29 Aplikasi 3 : EVALUASI POSTFIX

30 Algoritma s = stack kosong while(seluruh string belum dibaca) {baca simbol selanjutnya (symb) if symb adalah angka PUSH symb if symb adalah operator OpKanan = POP stack OpKiri = POP stack hitung hasil PUSH hasil } POP stack untuk memperoleh hasil akhir

31 Contoh Evaluasi postfix a * b. 4 9 * 5 + c * 7 / + c * 7 / + d. 4 2 ^ 9 2 ^ *

32 Tugas Waktu pengerjaan 1 jam Lakukan tracing untuk permasalahan berikut : ► Pengecekan tanda kurung  {a^2 - [ (b+c)^2 - (d+e)^2 ]}  {a - [(b+c))) - (d+e)]} ► Konversi infix ke postfix  {f*2 - [ (g+h)^2 - (i+j)^2 ]}  p + (q*r/3) * (s + t) ► Evaluasi postfix  12^23+2^45+2^--  abc*3/cb+*+, jika a=1, b=2 dan c=3


Download ppt "STACK (TUMPUKAN). Tujuan ► Mempelajari tipe data stack dan bagaimana menggunakan 4 fungsi dasar : push, pop, is_empty dan is_full. ► Mempelajari bagaimana."

Presentasi serupa


Iklan oleh Google