Stacks can be used to implement algorithms involving Infix, postfix and prefix expressions. So let us learn about them:-

#### INFIX:-

An infix expression is a single letter, or an operator, proceeded by one infix string and followed by another infix string.

A

A + B

(A + B) + (C – D)

#### PREFIX:-

A prefix expression is a single letter, or an operator, followed by two prefix strings. Every prefix string longer than a single variable contains an operator, first operand and second operand

A

+ A B

+ + A B – C D

#### POSTFIX:-

A postfix expression (also called Reverse Polish Notation) is a single letter or an operator, preceded by two postfix strings. Every postfix string longer than a single variable contains first and second operands followed by an operator.

A

A B +

A B + C D –

Prefix and postfix notations are methods of writing mathematical expressions without parenthesis. Time to evaluate a postfix and prefix expression is O(n), where **n** is the number of elements in the array.

INFIX |
PREFIX |
POSTFIX |

A + B | + A B | A B + |

A + B – C | – + A B C | A B + C – |

(A + B) * C – D | – * + A B C D | A B + C * D – |

To study further, we must also know the operator precedence and their associativity:-

TOKEN |
OPERATOR |
PRECEDENCE |
ASSOCIATIVITY |

( ) [ ] – . |
function call array element struct or union member |
17 | left-to-right |

— ++ | increment, decrement | 16 | left-to-right |

! ~ – + & * sizeof |
logical NOT one’s complement unary minus or plus address or indirection size (in bytes) |
15 | right-to-left |

(type) | type cast | 14 | right-to-left |

* / % | multiplicative | 13 | left-to-right |

+ – | binary add or subtract | 12 | left-to-right |

<< >> | shift | 11 | left-to-right |

> >= < <= |
relational | 10 | left-to-right |

== != | equality | 9 | left-to-right |

& | bitwise AND | 8 | left-to-right |

^ | bitwise XOR | 7 | left-to-right |

| | bitwise OR | 6 | left-to-right |

&& | logical AND | 5 | left-to-right |

|| | logical OR | 4 | left-to-right |

? : | conditional | 3 | right-to-left |

= += /= *= %= &= ^= |
assignment | 2 | right-to-left |

, | comma | 1 | left-to-right |