74 lines
		
	
	
		
			No EOL
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			No EOL
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#include <stdio.h>
 | 
						|
#include <string.h>
 | 
						|
 | 
						|
#define MAX_SIZE 100
 | 
						|
 | 
						|
char stack[MAX_SIZE][MAX_SIZE];
 | 
						|
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 == '/');
 | 
						|
}
 | 
						|
 | 
						|
int isAlphanumeric(char c)
 | 
						|
{
 | 
						|
    return ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'));
 | 
						|
}
 | 
						|
 | 
						|
void prefixToInfix(char *prefix)
 | 
						|
{
 | 
						|
    int len = strlen(prefix);
 | 
						|
    char temp[MAX_SIZE];
 | 
						|
 | 
						|
    for (int i = len - 1; i >= 0; i--)
 | 
						|
    {
 | 
						|
        if (isAlphanumeric(prefix[i]))
 | 
						|
        {
 | 
						|
            temp[0] = prefix[i];
 | 
						|
            temp[1] = '\0';
 | 
						|
            push(temp);
 | 
						|
        }
 | 
						|
        else if (isOperator(prefix[i]))
 | 
						|
        {
 | 
						|
            char op1[MAX_SIZE], op2[MAX_SIZE], result[MAX_SIZE];
 | 
						|
            strcpy(op1, pop());
 | 
						|
            strcpy(op2, pop());
 | 
						|
            sprintf(result, "(%s%c%s)", op1, prefix[i], op2);
 | 
						|
            push(result);
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    printf("Infix expression: %s\n", stack[top]);
 | 
						|
}
 | 
						|
 | 
						|
int main()
 | 
						|
{
 | 
						|
    char prefix[MAX_SIZE];
 | 
						|
    printf("Enter prefix expression: ");
 | 
						|
    gets(prefix);
 | 
						|
 | 
						|
    prefixToInfix(prefix);
 | 
						|
 | 
						|
    return 0;
 | 
						|
} |