Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Stack. Linear Stack, Queue, List Non Linear Tree, Graph.

Presentasi serupa


Presentasi berjudul: "Stack. Linear Stack, Queue, List Non Linear Tree, Graph."— Transcript presentasi:

1 stack

2 Linear Stack, Queue, List Non Linear Tree, Graph

3 Definisi Stack Operasi-operasi dasar Stack Push Pop

4 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.

5 Last In First Out

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

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

8 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

9 Operasi PUSH : Menambahkan elemen pada sebuah stack 1 PUSH top== bottom

10 Operasi PUSH : Menambahkan elemen pada sebuah stack PUSH 1 2 top bottom

11 Operasi PUSH : Menambahkan elemen pada sebuah stack PUSH bottom top

12 Operasi PUSH : Menambahkan elemen pada sebuah stack PUSH bottom top

13 Operasi POP : Menghapus sebuah elemen dari sebuah stack POP bottom top

14 Operasi POP : Menghapus sebuah elemen dari sebuah stack POP bottom top

15 Operasi POP : Menghapus sebuah elemen dari sebuah stack POP bottom top

16 16 Penambahan dan penghapusan elemen dilakukan pada elemen list yang terletak di paling depan Yang dihapus adalah elemen yang paling terakhir ditambahkan Nama lain : LIFO (Last In First Out) Operasi POP : Menghapus sebuah elemen dari sebuah stack

17 1. Membuat struktur data  class 2. Mendefinisikan atribut class. 3. Membuat fungsi/ operasi  method 1. Push 2. Pop. 4. Membuat fungsi utama  main()

18 #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

19 void initialize ( stack *s) void pop ( stack *s, char *x ) void push ( stack *s, char x ) void show ( stack *s )

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

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

22 void pop ( stack *s, char *x ) { if (s->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"); }

23 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"); }

24 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); show(my_stack); pop(my_stack, x); show(my_stack); }

25

26 Jika sebuah linked list SELALU menambahkan node baru dan menghapus node lama dari salah SATU ujungnya saja (posisi Head ataukah Tail)  STACK. TOP = head untuk single linked list. TOP = tail untuk double linked list. HOW?

27

28

29 Penggunaan Stack dalam Pemrograman

30 {x+(y-[a+b])*c-[(d+e)]}{z+(y [d+f]}*g- ((d+h)]}{w+(y-[a+r])*j-[(k+e)]}

31 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 == ‘{‘ ) //apakah symb termasuk kurung buka? push ( s, symb )// jika symb adalah kurung buka if ( symb == ‘)‘ || symb == ‘]‘ || symb == ‘}‘ ) //apakah symb termasuk kurung tutup? 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” );

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

33 Postfix adalah bentuk persamaan matematika dimana operator ditulis setelah kedua operannya. Contoh : AB+ CDE*-  C-(D*E) FG/H+  (F/G)+H Latihan : Ubah infix ke postfix {([(A+B)*C] – (D – E))^(F+G)} AB+C*DE - - FG+^

34 1. Tambahkan tanda kurung untuk mengelompokkan operasi. 2. Keluarkan operator ke sebelah kanan tanda kurung untuk setiap kelompok operasi satu per satu. 3. Hilangkan semua tanda kurung.

35 opndstck = the_empty_stack /* scan the input string, one by one element, into symb while ( not_end_of_input_string ) {symb = next_input_character if ( symb_is_an_operand ) push ( opndstck, symb ) else/* symb is an operator */ {opnd2 = pop ( opndstck ) opnd1 = pop ( opndstck ) value = opnd1 (symb) opnd2 push ( opndstck, value ) } /* end else */ } /* end while */ return ( pop ( opndstck ) )

36 Jika A = 4, B = 2, C = 3, hitunglah : 1. ABC+–ACB^*+ 2. AB*CB+^AC+–


Download ppt "Stack. Linear Stack, Queue, List Non Linear Tree, Graph."

Presentasi serupa


Iklan oleh Google