×

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

Find Union and Intersection of Two Arrays in C

Union You can find the union of the two sorted arrays using the join merge method on arr1[] and arr2[]. Use two index variables i and j with initial values i =...

4 minutes read.

Nested loop in C

Definition of Nested Loop A nested loop is generally used when we want to run a loop statement inside another loop statement. This kind of loop is also known as a...

3 minutes read.

Memory layout in C

Memory layout in C The C language is designed so that it becomes easier for a programmer to decide the amount of memory they want to use in a program. C program...

4 minutes read.

Bank management system in C

This is a mini project that is constructed completely using the C language. The bank management system is a beginner friendly project. To construct this user only needs to know...

12 minutes read.

Decimal to Binary in C

What is a decimal number? A decimal number is a number represented in the decimal number system. This system of binary conversion uses base 10 to represent numbers, i.e. the digits...

3 minutes read.

Add two numbers using the function in C

Here we will learn how to add two numbers by creating function in C. Let’s learn this with help of example. Code: - #include <stdio.h> int add_two_no(int a, int b); int main(){   int first_num,...

1 minute read.

Results of Comparison Operations in C and C++

In this tutorial, we will explore comparison operators and how the system should compare an incoming value supplied as a context parameter to a given value or range of values. A...

2 minutes read.

Int in C

The keyword int in C programming stands for integer and it is a data type which is used for variable declarations or declaration of functions of different types. Similar to...

4 minutes read.

Prime Number code in C

Prime Number Programs in C language In this tutorial, we will learn how to check whether the given number is a prime number or not, and how to print all the...

4 minutes read.

Find median of 1D array using function in C

Introduction: Here, we discuss how we can find the median of a 1D array using a function in C. The median is the value in the middle of the sorted...

3 minutes read.

Enumeration (Enum) in C

Enumeration (Enum) in C: In the C programming language, the enum is referred to as an enumerated type. Enum is a user defined data type consisting of integer values and...

3 minutes read.

Pascal Triangle in C

The pascal triangle in c is an array of binomial coefficients in triangular form. Here the nth row contains the binomial coefficient of ncr.In a pascal triangle, every number is...

2 minutes read.

What is String Comparison in C

String comparison is the process of comparing two strings (sequences of characters) to determine if they are equal, or if one is greater or less than the other. The comparison...

4 minutes read.

Loop Questions in C

Question 1: What is For loop syntax? Ans: The syntax that has been used for the ‘for’ loop in C programming language is: for (initialization statement /*for providing a value to variables*/; test...

19 minutes read.

Floyd’s triangle in C

Floyd’s triangle in C Floyd’s triangle is named after a person Robert Floyd. It is a right-angled triangle that is of natural numbers starting from 1 and consecutively selects the upcoming...

4 minutes read.

Variable Declaration in C

What is a Variable? A Variable is nothing more than a name for a memory place where data/information can be stored. Any alphabet (from a to z or A to Z), the...

4 minutes read.

Fseek Function in C

The fseek function is a function in the C standard library that changes the position of the file pointer in a stream-oriented file. It is typically used to move the...

3 minutes read.

Local Labels in C

Anyone who has written programs in the C programming language is required to be familiar with the "go to" and "labels" used in C to navigate between functions. "Local labels"...

4 minutes read.

Strcpy() in C

In C language many operations can be performed on a string. Characters in a sequence are known as string. Note:   To use this function we must include the #include<string.h> header file...

4 minutes read.

C program to compare the two strings

C program to compare the two strings Strings can be compared either by using the string function or without using string function. First, we will look at how we can compare the strings with...

4 minutes read.