Prefix to postfix conversion using C programming?
#include<stdio.h>
#include<conio.h>
#include<string.h>
char symbol,s[10];
int F(symbol)
{
switch(symbol)
{
case '+':
case '-':return 2;
case '*':
case '/':return 4;
case '^':
case '$':return 5;
case '(':return 0;
case '#':return -1;
default :return 8;
}
}
int G(symbol)
{
switch(symbol)
{
case '+':
case '-':return 1;
case '*':
case '/':return 3;
case '^':
case '$':return 6;
case '(':return 9;
case ')':return 0;
default: return 7;
}
}
void infix_to_postfix(char infix[],char postfix[])
{
int top=-1,j=0,i,symbol;
s[++top]='#';
for(i=0;i<strlen(infix);i++)
{
symbol=infix[i];
while(F(s[top])>G(symbol))
{
postfix[j]=s[top--];
j++;
}
if(F(s[top])!=G(symbol))
s[++top]=symbol;
else
top--;
}
while(s[top]!='#')
{
postfix[j++]=s[top--];
}
postfix[j]='\0';
}
void main()
{
char infix[30],postfix[30];
clrscr();
printf("Enter the valid infix expression\n");
scanf("%s",infix);
infix_to_postfix(infix, postfix);
printf("postfix expression is \n %s", postfix);
getch();
}