Stack atau tumpukan bisa diartikan sebagai kumpulan data yang seolah – olah diletakkan di atas data yang lain. Stack adalah suatu urutan elemen yang elemennya dapat diambil dan ditambah hanya pada posisi akhir (top) saja. Stact Bersifat LIFO (Last In First Out).
Contoh
dalam
kehidupan
sehari-hari
adalah
tumpukan
piring
di sebuah
restoran
yang tumpukannya
dapat
ditambah
pada
bagian
paling atas
dan
jika
mengambilnya
pun dari
bagian
paling atas
pula
INISIALISASI STACK
Pada
mulanya
isi
top dengan -1, karena
array dalam
C dimulai
dari 0, yang berarti
stack adalah
kosong.
Top adalah
suatu variabel penanda dalam STACK
yang menunjukkan
elemen teratas Stack sekarang.
Top Of
Stack akan selalu bergerak
hingga
mencapai
MAX of STACK sehingga
menyebabkan
stack penuh.
Fungsi IsFull
Untuk
memeriksa
apakah
stack sudah
penuh,
maka
dapat
dilakukan
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.
FUNGSI PUSH
Untuk
memasukkan
elemen
ke
stack, selalu
menjadi
elemen
teratas
stack. Tambah
satu
(increment) nilai
top of stack terlebih
dahulu
setiap kali ada
penambahan
elemen
stack, asalkan
stack masih
belum penuh,
kemudian
isikan nilai baru ke stack berdasarkan indeks top
of stack setelah
ditambah
satu
(diincrement).Seperti
gambar
di berikut
ini.
FUNGSI POP
Untuk mengambil elemen teratas dari stack. Ambil dahulu nilai elemen teratas stack dengan mengakses top of stack, tampilkan nilai yang akan diambil terlebih dahulu, baru diincrement nilai Top of Stack sehingga jumlah elemen stack berkurang.
FUNGSI IS EMPTYUntuk memeriksa apakah stack masih kosong. Dengan cara memeriksa Top of STACK, jika masih -1 maka berarti stack masih osong.
CONTOH PROGRAM STACK
#include
<stdio.h>
#include
<conio.h>
#include
<iostream.h>
#include
<iomanip.h>
judul()
{
cout<<"Name
: \nClass : \nNim :
"<<endl<<"\n\n";
return
0;
}
main()
{
int
plh;
int
top=0, i;
int
sisa;
char
nm[20][20],nim[20][20],kls[20][20];
do{
clrscr();
judul();
cout<<"===================================\n";
cout<<"
MENU OPTIONS\n";
cout<<"===================================\n";
cout<<"1.PUSH\n";
cout<<"2.POP\n";
cout<<"3.ISFULL/ISEMPTY\n";
cout<<"4.CLEAR
\n";
cout<<"5.VIEW
\n";
cout<<"6.EXIT\n";
cout<<"===================================\n";
cout<<"Input
Options : "; cin>>plh;
if
(plh<=6)
{
switch(plh)
{
case 1:
if(top==10)
{
clrscr();
judul();
cout<<"sory,data
is full";
getch();
}
else
{
cout<<"\nInput
name : "; gets(nm[top+1]);
cout<<"Input
NIM : "; cin>>nim[top+1];
cout<<"Input
Class : "; cin>>kls[top+1];
clrscr();
judul();
cout<<"data
has been entered";
getch();
top++;
}
break;
case 2:
if(top<1)
{
clrscr();
judul();
cout<<"Data
is Empty";
}
else
{
cout<<"\nDeleted
data :"<<top<<"\n\n";
cout<<"Name
: "<<nm[top]<<endl;
cout<<"NIM
: "<<nim[top]<<endl;
cout<<"Class
: "<<kls[top]<<endl;
top--;
getch();
clrscr();
judul();
cout<<"data
has been Deleted";
}
getch();
break;
case 3:
if(top==10)
{
clrscr();
judul();
cout<<"Data
has been Full";
}
else
if(top>=1)
{
sisa=10-top;
clrscr();
judul();
cout<<"Now
Data is still not fully, you have a "<<sisa<<" data
space";
}
else
if(top==0)
{
clrscr();
judul();
cout<<"Now
Data is Empty";
}
getch();
break;
case 4:
clrscr();
judul();
top=0;
cout<<"Data
has removed all";
getch();
break;
case 5:
cout<<"NO
|| NAME || NIM || CLASS ||\n";
if
(top==0)
cout<<"Data
Is Empty";
else
for(i=1;
i<=top; i++)
{
cout<<setiosflags(ios::left)<<setw(8)<<i;
cout<<setiosflags(ios::left)<<setw(17)<<nm[i];
cout<<setiosflags(ios::left)<<setw(17)<<nim[i];
cout<<setiosflags(ios::left)<<setw(10)<<kls[i]<<endl;
}
getch();
break;
case 6:
cout<<"\n\nEXIT.........";
getch();
break;
}
}
else
{
cout<<"incorrect
Option , Please Input 1-9";
getch();
}
}
while(plh!=6);
}
Hasil
Referensi :Stack, Menjelaskan tentang definisi dan operasi dasar dari stack keterangan , I KOMANG SETIA BUANA, S.Kom.,MT
Tidak ada komentar:
Posting Komentar