/*write a c program to convert accepted infix expression to its equivalent
postfix expression*/
#include<stdio.h>
#include<conio.h>
int icp(char x)
{
switch(x)
{
case '*':
case '/':
return 4;
case '+':
case '-':
return 3;
}
return 0;
}
int isp(char x)
{
switch(x)
{
case '*':
case '/':
return 4;
case '+':
case '-':
return 3;
case '(':
return 2;
case '~':
return 1;
}
return 0;
}
void main()
{
char expr[30],p[30],stack[30],ch;
int i,j=0,top=-1;
clrscr();
printf("\nenter infix expression:-");
scanf("%s",expr);
top++;
stack[top]='~';
for(i=0;expr[i]!='\0';i++)
{
ch=expr[i];
if(ch=='*'||ch=='/'||ch=='+'||ch=='-')
{
while(icp(ch)<=isp(stack[top]))
{
p[j]=stack[top];
top--;
j++;
}
top++;
stack[top]=ch;
}
else
if(ch=='(')
{
top++;
stack[top]=ch;
}
else
if(ch==')')
{
while(stack[top]!='(')
{
p[j]=stack[top];
top--;
j++;
}
top--;
}
else
{
p[j]=ch;
j++;
}
}
while(stack[top]!='~')
{
p[j]=stack[top];
j++;
top--;
}
p[j]='\0';
printf("postfix expression is:%s",p);
getch();
}
/*
enter infix expression:-((A+B)*(C-d))
postfix expression is:AB+Cd-*
*/
No comments:
Post a Comment