Infix to Postfix Conversion in C Program using Stack

Stack is very useful for storing data in the manner of the stack. It s useful when comes to the conversion of arithmetic expressions in high-level programming languages into machine-readable form. There are some complicated arithmetic expressions such as (A+B)*C(D/(E+D)). This form can be converted into polish notation using stack.

Infix and Postfix Expression

Infix expression contains the operator at the middle of the operands such as A+B. Whereas Postfix expression the operator goes to the end of the expression such as AB+.

Let us go through an example in the C program.


Infix to Postfix Conversion in C Program 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 Infix expression : ");
    scanf("%s",exp);
    
    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: Run 1

infix to postfix output

Output: Run 2

infix to postfix output