Code:
#include<stdio.h>
#include<stdlib.h>
void main()
{
char istr[100],tstack[100],ostr[100];
int i=0,top=0,j=0;
printf("Enter the infix expression...\n");
scanf("%s",&istr);
printf("The infix expression is :%s\n",istr);
while(istr[i]!='\0')
{
switch(istr[i])
{
case '^':
case '%':
case '/':
case '*':
if(tstack[top]=='+'||tstack[top]=='-'||tstack[top]=='(')
{
top++;
tstack[top]=istr[i];
}
else if(tstack[top]=='\0')
tstack[top]=istr[i];
else
{
while(tstack[top]!='\0')
{
ostr[j]=tstack[top];
top--;
j++;
}
if(top==-1)
top++;
tstack[top]=istr[i];
}
break;
case '+':
case '-':
if(tstack[top]=='(')
{
top++;
tstack[top]=istr[i];
}
else if(tstack[top]=='\0')
tstack[top]=istr[i];
else
{
while(tstack[top]!='\0')
{
ostr[j]=tstack[top];
top--;
j++;
}
if(top==-1)
top++;
tstack[top]=istr[i];
}
break;
case '(':if(tstack[top]=='\0')
tstack[top]=istr[i];
else
{
top++;
tstack[top]=istr[i];
}
break;
case ')':while(tstack[top]!='(')
{
ostr[j]=tstack[top];
top--;
j++;
}
tstack[top]='\0';
top--;
break;
default :ostr[j]=istr[i];
j++;
break;
}
i++;
}
while(top!=-1)
{
ostr[j]=tstack[top];
top--;
j++;
}
printf("The postfix expression is :%s",ostr);
}
Comment