#include<stdio.h>
#include<conio.h>
#include<process.h>
#define MAX 10
typedef struct stack
{
int data[MAX];
int top;
}stack;
//fungsi kosong untuk mengecek apakah stack kosong atau tidak
int kosong(stack *s)
{
if(s->top==-1)
return(1);
return(0);
}
//fungsi penuh untuk mengecek apakan stack penuh atau tidak
int penuh(stack *s)
{
if(s->top==MAX-1)
return(1);
return(0);
}
//fungsi push untuk memasukkan data ke dalam stack
void push(stack *s,int x)
{
s->top=s->top+1;// increment stack untuk menaikkan nilai TOS
s->data[s->top]=x; //pengisian niai untuk variabel data kedalam variabel x
}
//fungsi pop untuk mengambil data pada stack
int pop(stack *s)
{
int x;
x=s->data[s->top];
s->top=s->top-1;// decrement stack untuk mengambil data pada stack
return(x);
}
//------------------------
void main()
{
stack s;
int num;
s.top=-1;// inisialisasi agar nilai TOS menjadi 0
printf("\\nEnter decimal number:");
scanf("%d",&num);
while((num!=0))
{
if(!penuh(&s))
{
push(&s,num%16);// mengembalikkan nilai data menjadi modulus 16
num=num/16;
}
else
{
printf("\\nStack overflow");
exit(0);
}
}
printf("");
while(!kosong(&s))
{
num=pop(&s);
if (num <=9)
printf("%d",num);
else if (num == 10)
printf ("A");
else if (num == 11)
printf ("B");
else if (num == 12 )
printf ("C");
else if (num == 13)
printf ("D");
else if (num == 14)
printf ("E");
else if (num == 15)
printf ("F");
}
}