Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
Diterbitkan olehWulan Irianto Telah diubah "9 tahun yang lalu
1
Pertemuan 7 stack jual [Valdo] Lunatik Chubby Stylus
2
Struktur Data Majemuk Linear Stack, Queue, List Non Linear Tree, Graph
3
Stack Definisi Stack Operasi-operasi dasar Stack Push Pop
4
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.
5
Last In First Out
6
Penggunan Stack History pada web browser. Undo Log pada text editor.
Pemrosesan struktur bersarang (nested) : loop, rekursi, fungsi, dll. Algoritma back tracking – Artificial Intelegence
7
Operasi Dasar Stack 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
Visualisasi Operasi Stack
X A E B TOP remove: “POP” insert ‘B’: PUSH ‘B’ D K P O T R W Y a b c d e f g h i j
9
Push Operasi PUSH : Menambahkan elemen pada sebuah stack PUSH
top== bottom 1
10
PUSH Operasi PUSH : Menambahkan elemen pada sebuah stack PUSH 2 top
bottom 1
11
Operasi PUSH : Menambahkan elemen pada sebuah stack
top 3 2 bottom 1
12
Operasi PUSH : Menambahkan elemen pada sebuah stack
top 4 3 2 bottom 1
13
Pop Operasi POP : Menghapus sebuah elemen dari sebuah stack top 6 5
4 3 2 bottom 1
14
Operasi POP : Menghapus sebuah elemen dari sebuah stack
top 5 POP 4 3 2 bottom 1
15
Operasi POP : Menghapus sebuah elemen dari sebuah stack
3 top 2 bottom 1
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
Langkah Membuat Stack Membuat struktur data class
Mendefinisikan atribut class. Membuat fungsi/ operasi method Push Pop. Membuat fungsi utama main()
18
Deklarasi Struktur Data Stack
#define maxsize 100 // mendefinisikan maks ukuran data // dlm stack typedef struct { int top; // indeks TOP char items [ maxsize ] // array } stack; // nama tipe data baru yg dibuat // adalah stack
19
Deklarasi Fungsi-Fungsi Stack
void initialize ( stack *s) void pop ( stack *s, char *x ) void push ( stack *s, char x ) void show ( stack *s )
20
Fungsi Initialize void initialize ( stack *s)
// operasi initialize dg parameter // s bertipe pointer stack { s -> top = -1; // top = -1 stack dlm kondisi empty }
21
Fungsi Push 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
Fungsi Pop 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
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"); }
24
Fungsi Main void main() { stack *my_stack, s; char item, *x;
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); }
25
Output Program
26
Stack – Linked List 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
Push Operation
28
Pop Operation
29
Penggunaan Stack dalam Pemrograman
Minggu Keduabelas Penggunaan Stack dalam Pemrograman
30
Apakah Tanda Kurungnya Valid?
{x+(y-[a+b])*c-[(d+e)]}{z+(y [d+f]}*g- ((d+h)]}{w+(y-[a+r])*j-[(k+e)]}
31
Pengecekan Tanda Kurung
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
Example Case Cek apakah string di bawah ini valid! (a+b)}
(h-(j-(k-[l-n])) {x+(y-[a+b])*c-[(d+e)]} Valid
33
Evaluasi Postfix 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
Algoritma Infix Postfix
Tambahkan tanda kurung untuk mengelompokkan operasi. Keluarkan operator ke sebelah kanan tanda kurung untuk setiap kelompok operasi satu per satu. Hilangkan semua tanda kurung.
35
Algoritma Evaluasi Postfix
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
SOAL POSTFIX : Jika A = 4, B = 2, C = 3, hitunglah : ABC+–ACB^*+
AB*CB+^AC+–
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.