Anda di halaman 1dari 14

Euis Marlina, S.

Kom

Email : euismarlina@gmail.com
http://euismarlina.edublogs.org
HP : 08179424319

Mata Kuliah Struktur Data - 2008


Pengantar
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.

Mata Kuliah Struktur Data - 2008


Penggunaan Stack
Simulasi tumpukan di dunia nyata
Pemanggilan fungsi/prosedur
Implementasi fungsi/prosedur rekursif
Penanganan interupsi
Evaluasi ekspresi aritmatika
Konversi notasi infiks ke postfiks
Konversi basis 10 ke basis 2

Mata Kuliah Struktur Data - 2008


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.

Mata Kuliah Struktur Data - 2008


Operasi Stack
Create : membuat stack baru yang masih kosong
Push : untuk menambah/menyisipkan item pada
tumpukan paling atas
Pop : untuk menghapus 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

Mata Kuliah Struktur Data - 2008


Operasi Stack dengan
Array
Create
IsFull
Push
IsEmpty
Pop
Clear
Retreive/getTop

Mata Kuliah Struktur Data - 2008


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


Operasi Stack dengan
Linked List
 Create
 Push
 IsEmpty
 Pop
 Clear
 getTop

Mata Kuliah Struktur Data - 2008


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


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


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


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


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
Tampilan Program

Mata Kuliah Struktur Data - 2008