INISIALISASI STACK
Pada mulanya isi top dengan -1, karena array dalam C dimulai dari 0, yang berarti stack adalah kosong.
Untuk memeriksa apakah stack masih kosong. Dengan cara memeriksa Top of STACK, jika masih -1 maka berarti stack masih osong.
CONTOH PROGRAM STACK
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 penuh, kemudianisikan 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 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