Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
1
Sapta Candra Miarsa,S.T.,M.T.
Struktur Data - Stack Sapta Candra Miarsa,S.T.,M.T.
2
Aneka Struktur Data Struktur Data Kelebihan Kekurangan Array
Penambahan data dibelakang lebih mudah dilakukan Ukuran tetap, penghapusan lambat, pencarian lama Array terurut Pencarian jauh lebih cepat dibanding array yang tidak terurut Ukuran tetap, penghapusan lambat, penyisipan lama Tumpukan (Stack) Penambahan dilaksanakan dengan cepat, akses terhadap data yang terakhir kali dimasukan bisa dilakukan dengan cepat Pencarian dan penghapusan lambat Antrian (Queue) Data yang pertama kali masuk mudah diakses Akses terhadap data lain lambat Senarai berantai Penyisipan dan penghapusan data mudah Pencarian lama Pohon biner (Binary tree) Pencarian dan penyisipan mudah Penghapusan kompleks Tabel hash Akses cepat bila kunci diketahui. Penyisipan cepat Akses pelan jika kunci tidak diketahui
3
Stack (tumpukan) adalah struktur data yang memungkinkan penyisipan dan pengambilan data dari satu ujung yang disebut puncak. C B A
4
20 10 2 13 77 24 32 55 elemen Index array (A) 1 3 4 5 6 7 8
5
Stack (tumpukan) kosong C B A berisi 3 C B A diambil 1 dari puncak
Stack memiliki sifat last in first out (LIFO), artinya data yang terakhir kali masuk adalah Menjadi data yang pertama kali keluar.
6
Operasi Stack Operasi dasar pada tumpukan berupa push dan pop.
Push adalah operasi untuk memasukkan data kedalam tumpukan. Push (T,d) T: menyatakan tumpukan, d: item data yang disisipkan ke dalam T Pop adalah operasi untuk mengambil data dari tumpukan. Pop (T)
7
Operasi yang dapat dilakukan stack
Menambah (push) Mengambil (pop) megecek apakah stack penuh (isFull) mengecek apakah stack kosong (isEmpty) membersihkan stack (clear). Mencetak isi stack (print)
8
Ilustrasi Push dan Pop Operasi Penjelasan Hasil tumpukan
Push( T, ‘Bantul’) Push( T, ‘Sleman’) Bantul dimasukkan terlebih dahulu baru Sleman Pop(T) Push( T, ‘Kulon Progo’) Sleman dikeluarkan, Kulon Progo dimasukkan Push(T, ‘Wonosari’) Push(T, ‘Sleman’) Wonosari dimasukkan, diikuti Sleman ? Sleman Bantul Kulon Progo Bantul Sleman Wonosari Kulon Progo Bantul
9
Operasi-operasi stack
Mendefinisikan Max untuk maksimum isi stack Mendefinisikan stack # define Max 50 # defive true 1 # define false 0 Char stack [Max]; Init top;
10
Fungsi init : untuk inisialisasi atau membuat stack baru yang masih kosong.
Void init (void) { top=-1; }
11
Fungsi Full : digunakan untuk mengecek apakah stack penuh.
int full (void) { if (top==MAX-1) return (true); else return (false); }
12
Fungsi Empty : digunakan untuk mengecek apakah stack kosong.
int empty (void) { if (top==-1) return (true); else return (false); }
13
Fungsi Clear : digunakan untuk mengosongkan stack
Fungsi Clear : digunakan untuk mengosongkan stack. Stack dianggap kosong jika ujung atas stack pada posisi -1. Void clear (void) { top=-1; printf (“Stack telah dikosongkan\n”); }
14
Fungsi Push : digunakan untuk menambah data kedalam stack
Fungsi Push : digunakan untuk menambah data kedalam stack. Penambahan data tidak dapat dilakukan jika stack penuh. Tambahkan nilai top. Masukkan data pada posisi top. Void push (char info); { if (full ()!= true) top++; stack[top]=info; } else printf (“Stack sudah penuh.. \n”);
15
Fungsi pop : digunakan untuk mengeluarkan data teratas dari stack dengan syarat sebelumnya stack tidak boleh kosong. Ambil data dari posisi top Turunkan nilai top char pop (void); { char info; if (empty()!= true) info=stack[top]; top--; return(info); } else printf (“Stack sudah kosong.. \n”);
16
Program konversi aritmatik mengubah bentuk INFIX ke PREFIX
Misalkan operasi: A + B - C Operasi tersebut disebut dengan notasi infix, dan notasi infiks tersebut harus diubah terlebih dahulu menjadi notasi prefix A + B - C notasi prefixnya : - + A B C
17
A + B - C A + B - C + - + A A B A + B - C A + B - C - + A B C -+A BC
Stack Stack + - + Prefix Prefix A A B A + B - C A + B - C Stack - + Prefix Prefix A B C -+A BC
18
A+B-C : stack (kosong) prefix (kosong )
Scan A : stack (kosong) prefix ( A ) Scan : stack ( ) prefix ( A ) Scan B : stack ( ) prefix ( A B ) Scan : stack ( ) prefix ( A B ) Scan C : stack ( ) prefix ( A B C ) Karena sudah habis, push ToS stack ke Prefix Prefix ( -+ABC )
19
Program konversi aritmatik mengubah bentuk INFIX ke POSTFIX
Misalkan operasi: 7 + 1* 8 Operasi tersebut disebut dengan notasi infix, dan notasi infiks tersebut harus diubah terlebih dahulu menjadi notasi postfix 7 + 1* 8 notasi postfiksnya : 718*+
20
Infix to Postfix 7 + 8 * 1 Stack Posftix
21
Lihat soal dari depan ke belakang
Jika operand, maka masukkan ke postfix Jika operator, maka: Jika stack masih kosong, push ke stack Jika semua soal sudah dibaca, maka pop semua isi stack dan push ke postfix dan sesuaikan dengan urutannya
22
7 + 8 * 1 7 + 8 * 1 Stack Stack + * + Postfix Postfix 7 7 8 7 + 8 * 1 7 + 8 * 1 Stack Stack * + Postfix Postfix 7 8 1 7 8 1 * +
23
7+8*1 : stack (kosong) postfix (kosong)
Scan : stack (kosong) postfix ( ) Scan : stack ( ) postfix ( ) Scan : stack ( ) postfix ( ) Scan * : stack ( + * ) postfix ( ) Scan : stack ( + * ) postfix ( ) Karena sudah habis, push ToS stack ke Posfix Postfix ( * + )
24
Postfix Evaluator Scan Postfix string dari kiri kekanan.
Siapkan sebuah stack kosong. Jika soal adalah operand, tambahkan ke stack. Jika operator, maka pasti akan ada minimal 2 operand pada stack Pop dua kali stack, pop pertama disimpan dalam y, dan pop kedua ke dalam x. Lalu evaluasi x <operator> y. Simpan hasilnya dan push ke dalam stack lagi. Ulangi hingga seluruh soal discan. Jika sudah semua, elemen terakhir pada stack adalah hasilnya. Jika lebih dari satu elemen, berarti error!
25
7 8 1*+ * * 1*8=8 + 1 8 7 1 8 7 8 7 Y X + 8+7=15 15 8 7 15 Y X Postfix
Stack * * 1*8=8 + 1 8 7 1 8 7 8 7 Y X + 8+7=15 15 8 7 15 Y X
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.