Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
Diterbitkan olehBambang Atmadjaja Telah diubah "6 tahun yang lalu
1
STRUKTUR DATA Stack atau Tumpukan
2
Pengertian Stack Stack adalah suatu tumpukan dari benda
Bersifat LIFO (Last In First Out) yaitu Benda yang terakhir masuk ke dalam stack akan menjadi benda pertama yang dikeluarkan dari stack Contohnya, karena kita menumpuk Printer di posisi terakhir, maka Printer akan menjadi elemen teratas dalam tumpukan. Sebaliknya, karena kita menumpuk Monitor pada saat pertama kali, maka elemen Monitor menjadi elemen terbawah dari tumpukan. Dan jika kita mengambil elemen dari tumpukan, maka secara otomatis akan terambil elemen teratas, yaitu Printer juga.
3
Ilustrasi Stack Terdapat dua buah kotak yang ditumpuk, kotak yang satu akan ditumpuk diatas kotak yang lainnya. Jika kemudian stack 2 kotak tadi, ditambah kotak ketiga, keempat, kelima, dan seterusnya, maka akan diperoleh sebuah stack kotak yang terdiri dari N kotak.
4
Implementasi Stack Implementasi/representasi Stack bisa menggunakan Array atau Linked list. Stack yang diimplementasikan dengan array disebut fixed-length stack, karena ukurannya tidak bisa berubah. Stack yang diimplementasikan dengan linked list dengan pointer disebut variable-length stack, karena ukurannya bisa berubah-ubah sesuai dengan dinamika penambahan dan penghapusan elemen-elemennya.
5
Operasi Stack Create : membuat stack baru yang masih kosong
Push : untuk menambah/menyisipkan item pada tumpukan paling atas Pop : untuk mengambil item yang terakhir disisipkan, jika stack tidak kosong Clear : untuk mengosongkan stack Empty/IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong (mengembalikan nilai true jika stack kosong) Full/IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh (mengembalikan nilai true jika stack penuh) Retreive/getTop : untuk mendapatkan/ mengambil nilai yang terakhir disisipkan, jika stack tidak kosong
6
Operasi Stack dengan Array
Create IsFull Push IsEmpty Pop Clear Retreive/getTop
7
Inisialisasi Stack Pada mulanya isi top dengan -1, karena array dalam bahasa C dimulai dari 0, yang berarti bahwa data stack adalah KOSONG! Top adalah suatu variabel penanda dalam Stack yang menunjukkan elemen teratas data Stack sekarang. Top Of Stack akan selalu bergerak hingga mencapai MAX of STACK yang menyebabkan stack PENUH!
8
Ilustrasi Inisialisasi Stack
9
Fungsi IsFull Untuk memeriksa apakah stack sudah penuh?
Dengan cara memeriksa top of stack, jika sudah sama dengan MAX_STACK-1 maka full, jika belum (masih lebih kecil dari MAX_STACK-1) maka belum full
10
Ilustrasi Stack pada kondisi Full
11
Fungsi IsEmpty Untuk memeriksa apakah data Stack masih kosong?
Dengan cara memeriksa top of stack, jika masih -1 maka berarti data Stack masih kosong!
12
Ilustrasi Push pada Stack
13
Ilustrasi Pop pada Stack
14
Fungsi peek atau getTop
Digunakan untuk melihat top of stack
15
Stack dengan Linked List
Keunggulannya dibandingkan array tentu saja adalah penggunaan alokasi memori yang dinamis sehingga menghindari pemborosan memori. Misalnya pada stack dengan array, disediakan tempat untuk stack berisi 150 elemen, sementara ketika dipakai oleh user, stack hanya diisi 50 elemen, maka telah terjadi pemborosan memori untuk sisa 100 elemen yang tak terpakai. Dengan menggunakan linked list, maka tempat yang disediakan akan sesuai dengan banyaknya elemen yang mengisi stack. Stack dengan linked list tidak ada istilah full, sebab biasanya program tidak menentukan jumlah elemen stack yang mungkin ada (kecuali jika sudah dibatasi oleh pembuatnya). Namun demikian, sebenarnya stack memiliki batas kapasitas, yakni dibatasi oleh jumlah memori yang tersedia.
16
Operasi Stack dengan Linked List
Create Push IsEmpty Pop Clear getTop
17
Stack dengan Array #include<iostream.h> #include<conio.h>
#include<stdlib.h> #include<stdio.h> #define MAX 10 //ukuran maksimum dari stack void push(int stack[], int *top, int value); void pop(int stack[], int *top, int *value); int main() { int stack[MAX]; int top = -1; int n, value;
18
do { cout<<"Masukkan Nilai yang akan di Push : "; cin>>value; push(stack,&top,value); cout<<"Tekan 1 untuk Melanjutkan"<<endl; cin>>n; } while (n == 1); cout<<"Tekan 1 untuk Melakukan Pop"<<endl;
19
void pop(int stack[], int. top, int. value) { if(. top < MAX)
void pop(int stack[], int *top, int *value) { if(*top < MAX) *value = stack[*top]; *top = *top -1; } else cout<<"Stack Kosong, Pop Nilai Tidak Dapat Dilakukan"<<endl; exit(0);
20
Tampilan Program
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.