14
Mata Kuliah Struktur Data - 2008 Euis Marlina, S.Kom Email : [email protected] http://euismarlina.edublogs.org HP : 08179424319

Materi 8 - Stack

Embed Size (px)

Citation preview

Page 1: Materi 8 - Stack

Mata Kuliah Struktur Data - 2008

Euis Marlina, S.Kom

Email : [email protected]://euismarlina.edublogs.org

HP : 08179424319

Page 2: Materi 8 - Stack

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

Mata Kuliah Struktur Data - 2008

Page 3: Materi 8 - Stack

Penggunaan StackSimulasi tumpukan di dunia nyataPemanggilan fungsi/prosedurImplementasi fungsi/prosedur rekursifPenanganan interupsiEvaluasi ekspresi aritmatikaKonversi notasi infiks ke postfiksKonversi basis 10 ke basis 2

Mata Kuliah Struktur Data - 2008

Page 4: Materi 8 - Stack

Implementasi StackImplementasi/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.

Mata Kuliah Struktur Data - 2008

Page 5: Materi 8 - Stack

Operasi StackCreate : membuat stack baru yang masih kosongPush : untuk menambah/menyisipkan item pada

tumpukan paling atasPop : untuk menghapus item yang terakhir

disisipkan, jika stack tidak kosong Clear : untuk mengosongkan stackEmpty/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

Mata Kuliah Struktur Data - 2008

Page 6: Materi 8 - Stack

Operasi Stack dengan ArrayCreateIsFullPushIsEmptyPopClearRetreive/getTop

Mata Kuliah Struktur Data - 2008

Page 7: Materi 8 - Stack

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.

Mata Kuliah Struktur Data - 2008

Page 8: Materi 8 - Stack

Operasi Stack dengan Linked List

Create Push IsEmpty Pop Clear getTop

Mata Kuliah Struktur Data - 2008

Page 9: Materi 8 - Stack

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;

Mata Kuliah Struktur Data - 2008

Page 10: Materi 8 - Stack

do{

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;cin>>n;

Mata Kuliah Struktur Data - 2008

Page 11: Materi 8 - Stack

while(n == 1){

pop(stack,&top,&value);cout<<"Nilai yang di Pop :"<<value;cout<<"Tekan 1 untuk melakukan Pop

sebuah Elemen"<<endl;cin>>n;

}cout<<endl;cout<<"Tekan 1 untuk Melanjutkan"<<endl;cin>>n;

} while (n == 1);

getch();return 0;

}

Mata Kuliah Struktur Data - 2008

Page 12: Materi 8 - Stack

void push(int stack[], int *top, int value){

if(*top < MAX){

*top = *top + 1;stack[*top] = value;

}else{

cout<<"Stack Penuh, Push Nilai Tidak Dapat Dilakukan"<<endl;

exit(0);}

}

Mata Kuliah Struktur Data - 2008

Page 13: Materi 8 - Stack

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

}

Mata Kuliah Struktur Data - 2008

Page 14: Materi 8 - Stack

Tampilan Program

Mata Kuliah Struktur Data - 2008