Rabu, 03 Juni 2015

STACK

DEFINISI STACK
      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 EMPTY
Untuk 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