Rabu, 03 Juni 2015

STACK

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 teratasstack. Tambah satu (increment)   nilai top of stack terlebih dahulu setiap kaliada penambahan elemen stack, asalkan stack masih belum penuhkemudianisikan  nilai  baru  ke  stack  berdasarkan  indeks  top  of  stack  setelahditambah 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