Infix expression can be represented with A+B, the operator is in the middle of the expression.

In postfix expression, the operator will be at end of the expression, such as AB+

We can easily solve problems using Infix notation, but it is not possible for the computer to solve the given expression, so system must convert infix to postfix, to evaluate that expression.

The following C program will help to evaluate postfix expression using Stack.

C Program to Evaluate POSTFIX Expression Using Stack

C Program to Convert Infix to Postfix using Stack

#include<stdio.h>
#include<ctype.h>

char stack[100];
int top = -1;

void push(char x)
{
    stack[++top] = x;
}

char pop()
{
    if(top == -1)
        return -1;
    else
        return stack[top--];
}

int priority(char x)
{
    if(x == '(')
        return 0;
    if(x == '+' || x == '-')
        return 1;
    if(x == '*' || x == '/')
        return 2;
    return 0;
}

int main()
{
    char exp[100];
    char *e, x;
    printf("Enter the expression : ");
    scanf("%s",exp);
    printf("\n");
    e = exp;
    
    while(*e != '\0')
    {
        if(isalnum(*e))
            printf("%c ",*e);
        else if(*e == '(')
            push(*e);
        else if(*e == ')')
        {
            while((x = pop()) != '(')
                printf("%c ", x);
        }
        else
        {
            while(priority(stack[top]) >= priority(*e))
                printf("%c ",pop());
            push(*e);
        }
        e++;
    }
    
    while(top != -1)
    {
        printf("%c ",pop());
    }
return 0; }

Output Test Case 1:

Enter the expression : a+b*c

a b c * +

Output Test Case 2:

Enter the expression : (a+b)*c+(d-a)

a b + c * d a - +

Output Test Case 3:

Enter the expression : ((4+8)(6-5))/((3-2)(2+2))
4 8 + 6 5 - 3 2 - 2 2 + /