![Page 1: Infix to postfix conversion Scan the Infix expression left to right If the character x is an operand Output the character into the Postfix Expression](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f285503460f94c40bfe/html5/thumbnails/1.jpg)
Infix to postfix conversionScan the Infix expression left to right If the character x is an operand
Output the character into the Postfix Expression If the character x is a left or right parenthesis
If the character is “(“ Push it into the stack
if the character is “)” Repeatedly pop and output all the operators/characters
until “(“ is popped from the stack. If the character x is a is a regular operator
Step 1: Check the character y currently at the top of the stack.
Step 2: If Stack is empty or y=‘(‘ or y is an operator of lower precedence than x, then push x into stack.
Step 3: If y is an operator of higher or equal precedence than x, then pop and output y and push x into the stack.
When all characters in infix expression are processed repeatedly pop thecharacter(s) from the stack and output them until the stack is empty.
![Page 2: Infix to postfix conversion Scan the Infix expression left to right If the character x is an operand Output the character into the Postfix Expression](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f285503460f94c40bfe/html5/thumbnails/2.jpg)
Infix Expression
Postfix Expression
( a + b - c ) * d – ( e + f )
StackInfix to postfix conversion
![Page 3: Infix to postfix conversion Scan the Infix expression left to right If the character x is an operand Output the character into the Postfix Expression](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f285503460f94c40bfe/html5/thumbnails/3.jpg)
a + b - c ) * d – ( e + f )
(
Infix Expression
Postfix Expression
StackInfix to postfix conversion
![Page 4: Infix to postfix conversion Scan the Infix expression left to right If the character x is an operand Output the character into the Postfix Expression](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f285503460f94c40bfe/html5/thumbnails/4.jpg)
+ b - c ) * d – ( e + f )
(
a
Infix Expression
Postfix Expression
StackInfix to postfix conversion
![Page 5: Infix to postfix conversion Scan the Infix expression left to right If the character x is an operand Output the character into the Postfix Expression](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f285503460f94c40bfe/html5/thumbnails/5.jpg)
b - c ) * d – ( e + f )
(
a
+
Infix Expression
Postfix Expression
StackInfix to postfix conversion
![Page 6: Infix to postfix conversion Scan the Infix expression left to right If the character x is an operand Output the character into the Postfix Expression](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f285503460f94c40bfe/html5/thumbnails/6.jpg)
- c ) * d – ( e + f )
(
a b
+
Infix Expression
Postfix Expression
StackInfix to postfix conversion
![Page 7: Infix to postfix conversion Scan the Infix expression left to right If the character x is an operand Output the character into the Postfix Expression](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f285503460f94c40bfe/html5/thumbnails/7.jpg)
c ) * d – ( e + f )
(
a b +
-
Infix Expression
Postfix Expression
StackInfix to postfix conversion
![Page 8: Infix to postfix conversion Scan the Infix expression left to right If the character x is an operand Output the character into the Postfix Expression](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f285503460f94c40bfe/html5/thumbnails/8.jpg)
) * d – ( e + f )
(
a b + c
-
Infix Expression
Postfix Expression
StackInfix to postfix conversion
![Page 9: Infix to postfix conversion Scan the Infix expression left to right If the character x is an operand Output the character into the Postfix Expression](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f285503460f94c40bfe/html5/thumbnails/9.jpg)
* d – ( e + f )
a b + c -
Infix Expression
Postfix Expression
StackInfix to postfix conversion
![Page 10: Infix to postfix conversion Scan the Infix expression left to right If the character x is an operand Output the character into the Postfix Expression](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f285503460f94c40bfe/html5/thumbnails/10.jpg)
d – ( e + f )
a b + c -
*
Infix Expression
Postfix Expression
StackInfix to postfix conversion
![Page 11: Infix to postfix conversion Scan the Infix expression left to right If the character x is an operand Output the character into the Postfix Expression](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f285503460f94c40bfe/html5/thumbnails/11.jpg)
– ( e + f )
a b + c - d
*
Infix Expression
Postfix Expression
StackInfix to postfix conversion
![Page 12: Infix to postfix conversion Scan the Infix expression left to right If the character x is an operand Output the character into the Postfix Expression](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f285503460f94c40bfe/html5/thumbnails/12.jpg)
( e + f )
a b + c – d *
-
Infix Expression
Postfix Expression
StackInfix to postfix conversion
![Page 13: Infix to postfix conversion Scan the Infix expression left to right If the character x is an operand Output the character into the Postfix Expression](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f285503460f94c40bfe/html5/thumbnails/13.jpg)
e + f )
a b + c – d *
-
(
Infix Expression
Postfix Expression
StackInfix to postfix conversion
![Page 14: Infix to postfix conversion Scan the Infix expression left to right If the character x is an operand Output the character into the Postfix Expression](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f285503460f94c40bfe/html5/thumbnails/14.jpg)
+ f )
a b + c – d * e
-
(
Infix Expression
Postfix Expression
StackInfix to postfix conversion
![Page 15: Infix to postfix conversion Scan the Infix expression left to right If the character x is an operand Output the character into the Postfix Expression](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f285503460f94c40bfe/html5/thumbnails/15.jpg)
f )
a b + c – d * e
-
(
+
Infix Expression
Postfix Expression
StackInfix to postfix conversion
![Page 16: Infix to postfix conversion Scan the Infix expression left to right If the character x is an operand Output the character into the Postfix Expression](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f285503460f94c40bfe/html5/thumbnails/16.jpg)
)
a b + c – d * e f
-
(
+
Infix Expression
Postfix Expression
StackInfix to postfix conversion
![Page 17: Infix to postfix conversion Scan the Infix expression left to right If the character x is an operand Output the character into the Postfix Expression](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f285503460f94c40bfe/html5/thumbnails/17.jpg)
a b + c – d * e f +
-
Infix Expression
Postfix Expression
StackInfix to postfix conversion
![Page 18: Infix to postfix conversion Scan the Infix expression left to right If the character x is an operand Output the character into the Postfix Expression](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f285503460f94c40bfe/html5/thumbnails/18.jpg)
a b + c – d * e f + -
Infix Expression
Postfix Expression
StackInfix to postfix conversion
![Page 19: Infix to postfix conversion Scan the Infix expression left to right If the character x is an operand Output the character into the Postfix Expression](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f285503460f94c40bfe/html5/thumbnails/19.jpg)
#include<stdio.h>#include<stdlib.h>#define STACKSIZE 20typedef struct{int top;char items[STACKSIZE];}STACK;void push(STACK *, char);char pop(STACK *);void main(){int i;char x,y, E[20] ; /* Assume that Infix Expression E contains single-digit integers/parenthesis/operators*/STACK s;s.top = -1; /* Initialize the stack is */printf("Enter the Infix Expression:");scanf("%s",E);for(i=0;E[i] != '\0';i++){x= E[i];
![Page 20: Infix to postfix conversion Scan the Infix expression left to right If the character x is an operand Output the character into the Postfix Expression](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f285503460f94c40bfe/html5/thumbnails/20.jpg)
if(x<=’z’ && x>=’a’) /* Consider all lowercase letter operands from a to z */printf(“%c”,x);else if(x == ’(’)push(&s ,x);else if(x == ’)’){y=pop(&s) ;while(y != ‘(‘){printf(“%c”,y);y=pop(&s) ;}}else {if(s.top ==-1 || s.items[s.top] == ‘(‘)push(&s ,x);else {y = s.items[s.top]; /* y is the top operator in the stack*/if( y==’*’ || y==’/’){ /* precedence of y is higher/equal to x*/printf(“%c”, pop(&s));push(&s ,x);}
![Page 21: Infix to postfix conversion Scan the Infix expression left to right If the character x is an operand Output the character into the Postfix Expression](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f285503460f94c40bfe/html5/thumbnails/21.jpg)
else if ( y==’+’ || y==’-’)if( x==’+’ || x==’-’) { /* precedence of y is equal to x*/printf(“%c”, pop(&s));push(&s ,x);}else /* precedence of y is less than x*/push(&s ,x);}}}while(s.top != -1)printf(“%c”,pop(&s));}void push(STACK *sptr, char ps) /*pushes ps into stack*/{if(sptr->top == STACKSIZE-1){printf("Stack is full\n");exit(1); /*exit from the function*/}elsesptr->items[++sptr->top]= ps;}
![Page 22: Infix to postfix conversion Scan the Infix expression left to right If the character x is an operand Output the character into the Postfix Expression](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f285503460f94c40bfe/html5/thumbnails/22.jpg)
char pop(STACK *sptr){if(sptr->top == -1){printf("Stack is empty\n");exit(1); /*exit from the function*/}elsereturn sptr->items[sptr->top--];}