×

Infix to Postfix program in C

Infix Expression: In infix expression, an operator is placed between the two operands. Example: x + y, here operator + is placed between operands x and y.

Postfix Expression: In postfix expression, an operator is placed after the operands. Example: xy+, here operator + is placed after the operands x and y.

Algorithm for the conversion from infix to postfix

  1. Start
  2. Read the expression from user.
  3. Scan the expression character by character, if the character is alphabet or number print it to the console
  4. If the expression is operator then,
    • If the precedence of current character operator is greater than top of the stack (or the stack is empty) then push an operator into the stack.
    • If the precedence of current character operator is less than the top of stack, pop all elements from the stack whose precedence is greater than or equal to the current element.
  5. If the operator is ‘(‘, push it on stack.
  6. If the operator is ‘) ‘, pop all elements from stack until we get ‘(‘and also remove ‘(‘and ‘) ‘operator from the stack.
  7. Repeat the steps from 3 to 6 until the expression becomes empty.
  8. Print the output to screen
  9. Pop all elements from the stack and print the output to console.
  10. End

Example

Consider the below code:

#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;

    printf("Postfix expression : ");

    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:

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

Postfix expression: a b c + * d –

Explanation of Code:

  1. As the program execution starts from the main(), in main() firstly we are reading expression in exp character array. Assigning this char array to pointer variable e.
  2. We are scanning the expression character by character and checking if the character is alphabet or a number then print that character to the screen.
  3. Next, we are checking if the character is ‘(‘then push it into the stack.
  4. If the character is ‘) ‘, then pop all elements from the stack and print them to the screen until we get ‘) ‘and remove the both parenthesis ‘(‘and ‘) ‘.
  5. Next checking is if the character is operator then check if priority of current operator is greater than top of stack element then push the current character into the stack. Else if, the priority of current operator is less than top of stack then pop all elements with higher priority from the stack, print them and then push current operator into the stack.
  6. Move to the next character and repeat the steps from 2 to 5 until the expression ends.
  7. Pop all elements from the stack and print them to console. This is the functionality of main().
  8. As we are using stack in this solution, we had to write the code for stack functionalities. Stack works on last in first out property and top is the pointer which points to the top element of stack.
  9. In push(), insert the element into the stack and increment the top by 1.
  10. In pop(), return the top most element and decrement the top by 1.
  11. Next priority(), returns the priority of operators.

Related Topics

Banker’s Algorithm in C

Introduction Before doing a "s-state" check to look for potential activities and deciding if allocation should be allowed to continue, the banker's algorithm, a resource allocation and deadlock avoidance algorithm, tests...

5 minutes read.

Nested Structure in C

In C language, we can create nested Structure (Structure within Structure). There are two ways to define a nested structure. By separate structure By Embedded structure   Separate structure In a separate...

1 minute read.

Stack implementation in C

Stack implementation in C Stack stores the data in a particular order. It is a linear data structure that follows the principle of the Last In First Out (LIFO) technique where...

3 minutes read.

How to use sine() function in C

What is Function? The function is a set of statements. It takes input and performs some computation to produce output. The process is a set of codes only achieved when it is...

3 minutes read.

Nested if-else statement in C

If we use an if-else statement within another if statement in a C program, it is called a nested if-else statement in C. It helps to check the condition inside...

3 minutes read.

Snake Game in C

Snake game in C is basic desktop console program which was created in 1970’s. It is an old classic game which was played by every child across the world. This...

4 minutes read.

Flow Chart of For loop in C

This is a flowchart that represents the process of executing the for loop in the C programming language. Generally, as we know there are three main components of for loop:1. The...

3 minutes read.

Why does sizeof(x++) not Increment x in C

Sizeof() is a much-involved operator in C or C++. It is an incorporated time unary administrator which can be utilized to figure the size of its operand. The consequence of...

5 minutes read.

How to get ASCII value in C

For text data on computers and the internet, ASCII (American Standard Code for Information Interchange). It is the most widely used character encoding standard. One hundred twenty-eight alphabetic, numeric, special...

3 minutes read.

String Handling functions in C

String :- The String is the collection of characters. Every String ends with the null character, and the String is enclosed in the double quotations .ie, "javaTpoint". If we see any...

5 minutes read.

Assert() Function in C

Assert (): In C, the statements are executed with the exit statement. In C language declare, and it tests the condition parameters. If the statement executed will be false, it...

3 minutes read.

Example of Iteration in C

The iterations in the C language are the statements which are executed number of times until a certain condition is reached. These iterations are regarded as “Loops” in C language....

3 minutes read.

memcmp() in C

Introduction: In this article we are discuss about memcmp() function in C. This function permits the person to evaluate the bytes of the two characters, as mentioned above. Depending on...

4 minutes read.

Find occurrence of substring in C using function

Introduction: In this article, we discuss finding the occurrence of a substring in C using function. This software takes strings and substrings as input and counts the occurrences of substrings within...

3 minutes read.

Error handling in C

Error handling in C: The C programming standard does not provide direct convenience for handling the errors. However, being a system programming language, it definitely will give access to handling...

4 minutes read.

How to Merge Array in C?

Introduction Merging arrays is a common task for many developers but might be difficult for beginners of C programming. Fortunately, our guide will show you how to quickly merge arrays in...

6 minutes read.

Infinite loop in C

Definition of infinite loop The infinite loop is a loop that does not get dismissed because of its looping construct. A continuous output or no output are the two possible outcomes...

3 minutes read.

OpenGL in C

OpenGL stands for Open Graphics Library. It is a low-level, widely supported modeling and rendering software package that is widely available across all the platforms. It is an API used...

4 minutes read.

Isalnum() function in C

Introduction: The isalnum () is a function used in C programming language. This function checks the passing number or argument is an alphanumeric number or not. The alphanumeric number consists of the...

3 minutes read.

Merge Sort in C

The merge sort follows the principle of the divide and conquers algorithm. Firstly it divides the input of an array into two halves and then calls itself for the two...

4 minutes read.