The last post is about conversion of In-fix expression to Post-fix[^]. Now we are going to convert Post-fix to In-fix expression.
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
class stacks
{
char stack[256][256], t;
public:
stacks()
{
t=-1;
}
void push(char str[256])
{
strcpy(stack[++t], str);
}
char* top()
{
return stack[t];
}
void pop()
{
t--;
}
void show()
{
cout<<"Postfix: "<<stack[0];
}
};
int isOperator(char c)
{
if(c=='+'||c=='-'||c=='/'||c=='*')
{
return 1;
}
return 0;
}
int main()
{
stacks s;
char str[256], *ptr, tmp[256];
cout<<"Enter string: ";
cin>>str;
ptr = str;
while(*ptr!='\0')
{
if(isOperator(*ptr))
{
char *a, *b;
a = s.top();
s.pop();
b = s.top();
s.pop();
sprintf(tmp, "%s%c%s", b, *ptr, a);
s.push(tmp);
}
else
{
sprintf(tmp, "%c", *ptr);
s.push(tmp);
}
*ptr++;
}
s.show();
}
