C Program to Convert Decimal to Binary Using Stack
Convert decimal to Binary Using Stack [Decimal to Binary Conversion ]
Decimal number can be converted into equivalent binary number using stack , The procedure to convert the given number into binary is described in the following video .
Program :
#include<stdio.h> #include<conio.h> #include<process.h> #define MAX 10 typedef struct stack { int data[MAX]; int top; }stack; //--------------------- int empty(stack *s) { if(s->top==-1) return(1); return(0); } //---------------------- int full(stack *s) { if(s->top==MAX-1) return(1); return(0); } //----------------------- void push(stack *s,int x) { s->top=s->top+1; s->data[s->top]=x; } //----------------------- int pop(stack *s) { int x; x=s->data[s->top]; s->top=s->top-1; return(x); } //------------------------ void main() { stack s; int num; s.top=-1; printf("nEnter decimal number:"); scanf("%d",&num); while((num!=0)) { if(!full(&s)) { push(&s,num%2); num=num/2; } else { printf("nStack overflow"); exit(0); } } printf("n"); while(!empty(&s)) { num=pop(&s); printf("%d",num); } }
Explanation :
Step 1:
s.top=-1;
- Initially Top = -1 .
- It is used to create empty Stack.
Step 2 :
printf("nEnter decimal number:");scanf("%d",&num);
- Accept Decimal Number using Scanf
Step 3:
As per video , Now we are dividing the original number by 2 and remainder is pushed onto stack , In the Second Iteration again we are dividing num by 2 and remainder is pushed onto stack . This action is carried out till number becomes 0.
Step 4 :
if(!full(&s)) { push(&s,num%2); num=num/2; }
- Push Remainder Onto Stack if Stack is not Full and number != 0
When number becomes 0 i.e Do not push elements onto stack. Now as shown in video after pushing pop all remainders one by one display it .