#include #include #define MAX_SIZE 100 #define MAX_EXPR_LEN 200 char stack[MAX_SIZE][MAX_EXPR_LEN]; int top = -1; void push(const char* item) { if (top >= MAX_SIZE - 1) { printf("Stack Overflow\n"); return; } strcpy(stack[++top], item); } char* pop() { if (top < 0) { printf("Stack Underflow\n"); return NULL; } return stack[top--]; } int isOperator(char c) { return (c == '+' || c == '-' || c == '*' || c == '/' || c == '^'); } void postfixToInfix(const char* postfix) { char op1[MAX_EXPR_LEN], op2[MAX_EXPR_LEN], temp[MAX_EXPR_LEN]; for (int i = 0; postfix[i] != '\0'; i++) { if (!isOperator(postfix[i])) { temp[0] = postfix[i]; temp[1] = '\0'; push(temp); } else { strcpy(op2, pop()); strcpy(op1, pop()); sprintf(temp, "(%s%c%s)", op1, postfix[i], op2); push(temp); } } printf("Infix expression: %s\n", stack[top]); } int main() { char postfix[MAX_SIZE]; printf("Enter postfix expression: "); gets(postfix); postfixToInfix(postfix); return 0; }