Write a C Program to convert intfix expression to postfix expression
#include<stdio.h>
#include<stdlib.h>
#define max 100
struct stack
{
char value[max];
int top;
};
struct stack stk;
int isFull()
{
if(stk.top==max-1)
return 1;
return 0;
}
int isEmpty()
{
if(stk.top==-1)
return 1;
return 0;
}
int push(char key)
{
if(isFull())
return -1;
stk.value[++stk.top]=key;
return stk.top;
}
char pop()
{
if(isEmpty())
return -1;
return stk.value[stk.top--];
}
int preced(char ch){
if(ch=='^')
return 5;
else if(ch=='/')
return 4;
else if(ch == '*')
return 3;
else if(ch == '+')
return 2;
else if(ch == '-')
return 1;
else
return 0;
}
void infixToPostfix(char infix[]){
char postfix[100],ch;
int i=0, j=0;
while(infix[i]!='\0') {
ch = infix[i];
switch(ch){
case '(': push(ch);
break;
case ')': while(stk.value[stk.top]!='(')
{
postfix[j++]=pop();
}
pop();
break;
case '^':
case '/':
case '*':
case '+':
case '-':
while(preced(ch)<preced(stk.value[stk.top]))
{
postfix[j++]=pop();
}
push(ch);
break;
default:
postfix[j++] = ch;
break;
}
i++;
}
postfix[j] = '\0';
printf("\n POSTFIX EXPRESSION = %s", postfix);
}
int main()
{
char infix[100];
stk.top=-1;
printf("ENTER THE INFIX EXPRESSION = ");
scanf("%s",&infix);
infixToPostfix(infix);
return 0;
}
OUTPUT :
Post a Comment
0 Comments