56 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
 | 
						|
#include <stdio.h>
 | 
						|
#include <string.h>
 | 
						|
 | 
						|
#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;
 | 
						|
}
 |