Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Struktur Data Stack.  Definisi Stack  Operasi-operasi dasar Stack  Push  Pop  Contoh program operasi dasar Stack menggunakan array dan linked list.

Presentasi serupa


Presentasi berjudul: "Struktur Data Stack.  Definisi Stack  Operasi-operasi dasar Stack  Push  Pop  Contoh program operasi dasar Stack menggunakan array dan linked list."— Transcript presentasi:

1 Struktur Data Stack

2  Definisi Stack  Operasi-operasi dasar Stack  Push  Pop  Contoh program operasi dasar Stack menggunakan array dan linked list

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 Last In First Out

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

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

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

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

9 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

10 Stack dengan Array  TOP adalah indeks terakhir Indeks012 DataABC Push ‘D’ Indeks0123 DataABCD Pop Indeks0123 DataABCD

11 Buat atribut dan initialize class StackArray attr_accessor :maxsize, :top, :items @items=Array.new end

12 Method isEmpty def Is_Empty return TRUE else return FALSE end

13 Method isFull def Is_Full if return TRUE else return FALSE end

14 Method pop def pop < 0 # stack is empty printf("\nERROR: the stack is empty!"); else - 1; printf("\nPOP SUCCEED"); end

15 Method push def push (data ) # stack is full printf("\nERROR: the stack is full!"); + 1; = data; printf("\nPUSH SUCCEED"); end

16 Method show def show printf("\nISI STACK :\n"); while i>=0 i=i-1 end

17 Contoh akses baru=StackArray.new baru.push("A") baru.push("B") baru.push("C") baru.show baru.pop baru.show baru.push("D") baru.push("E") baru.show

18 Stack dengan Linked List  Jika sebuah linked list SELALU menambahkan node baru dan menghapus node lama dari salah SATU ujungnya saja (posisi Head ataukah Tail)  STACK.  HOW?

19 Push Operation  Identik dengan operasi prepend

20 Pop Operation  Identik dengan operasi del first

21 TUGAS 4  NPM ganjil  HEAD  NPM genap  TAIL

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+B A-C+B A+((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 operand 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 / + d. 4 2 ^ 9 2 ^ *

32 Tugas Buat program untuk:  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 "Struktur Data Stack.  Definisi Stack  Operasi-operasi dasar Stack  Push  Pop  Contoh program operasi dasar Stack menggunakan array dan linked list."

Presentasi serupa


Iklan oleh Google