Professional Documents
Culture Documents
Postfix/Infix/Prefix
lecture delivered
by
Zulfiqar Ali
Use of Stack
Example of use: prefix, infix, postfix
expressions.
Consider the expression A+B: we think of
applying the operator + to the operands
A and B.
+ is termed a binary operator: it takes
two operands.
Writing the sum as A+B is called the infix
form of the expression.
11/10/2014
prefix
postfix
11/10/2014
infix form
11/10/2014
infix form
convert multiplication
11/10/2014
infix form
convert multiplication
convert addition
11/10/2014
infix form
convert multiplication
convert addition
postfix form
11/10/2014
infix form
11/10/2014
infix form
convert addition
10
11/10/2014
infix form
convert addition
convert multiplication
11
11/10/2014
infix form
convert addition
convert multiplication
postfix form
12
Precedence of Operators
The five binary operators are: addition,
subtraction, multiplication, division and
exponentiation.
The order of precedence is (highest to
lowest)
Exponentiation
Multiplication/division *, /
Addition/subtraction
+, 11/10/2014
13
Precedence of Operators
For operators of same precedence, the
left-to-right rule applies:
A+B+C means (A+B)+C.
For exponentiation, the right-to-left rule
applies
A B C means A ( B C )
11/10/2014
14
Infix to Postfix
Infix
A+B
12 + 60 23
(A + B)*(C D )
A B * C D + E/F
11/10/2014
Postfix
AB+
12 60 + 23
AB+CD*
A B C*D E F/+
15
Infix to Postfix
Infix
A+B
12 + 60 23
(A + B)*(C D )
A B * C D + E/F
11/10/2014
Postfix
AB+
12 60 + 23
AB+CD*
A B C*D E F/+
16
Infix to Postfix
Note that the postfix form an expression
does not require parenthesis.
Consider 4+3*5 and (4+3)*5. The
parenthesis are not needed in the first but
they are necessary in the second.
The postfix forms are:
4+3*5
435*+
(4+3)*5
43+5*
11/10/2014
17
Evaluating Postfix
Each operator in a postfix expression
refers to the previous two operands.
Each time we read an operand, we push it
on a stack.
When we reach an operator, we pop the
two operands from the top of the stack,
apply the operator and push the result
back on the stack.
11/10/2014
18
Evaluating Postfix
Stack s;
while( not end of input ) {
e = get next element of input
if( e is an operand )
s.push( e );
else {
op2 = s.pop();
op1 = s.pop();
value = result of applying operator e to op1 and op2;
s.push( value );
}
}
finalresult = s.pop();
11/10/2014
19
Evaluating Postfix
Evaluate 6 2 3 + - 3 8 2 / + * 2 3 +
Input
6
11/10/2014
op1
op2
value
stack
6
20
Evaluating Postfix
Evaluate 6 2 3 + - 3 8 2 / + * 2 3 +
Input
6
2
11/10/2014
op1
op2
value
stack
6
6,2
21
Evaluating Postfix
Evaluate 6 2 3 + - 3 8 2 / + * 2 3 +
Input
6
2
3
11/10/2014
op1
op2
value
stack
6
6,2
6,2,3
22
Evaluating Postfix
Evaluate 6 2 3 + - 3 8 2 / + * 2 3 +
Input
6
2
3
+
11/10/2014
op1
op2
value
stack
6
6,2
6,2,3
6,5
23
Evaluating Postfix
Evaluate 6 2 3 + - 3 8 2 / + * 2 3 +
Input
6
2
3
+
-
11/10/2014
op1
op2
value
2
6
3
5
5
1
stack
6
6,2
6,2,3
6,5
1
24
Evaluating Postfix
Evaluate 6 2 3 + - 3 8 2 / + * 2 3 +
Input
6
2
3
+
3
11/10/2014
op1
op2
value
2
6
6
3
5
5
5
1
1
stack
6
6,2
6,2,3
6,5
1
1,3
25
Evaluating Postfix
Evaluate 6 2 3 + - 3 8 2 / + * 2 3 +
Input
6
2
3
+
3
8
11/10/2014
op1
op2
value
2
6
6
6
3
5
5
5
5
1
1
1
stack
6
6,2
6,2,3
6,5
1
1,3
1,3,8
26
Evaluating Postfix
Evaluate 6 2 3 + - 3 8 2 / + * 2 3 +
Input
6
2
3
+
3
8
2
11/10/2014
op1
op2
value
2
6
6
6
6
3
5
5
5
5
5
1
1
1
1
stack
6
6,2
6,2,3
6,5
1
1,3
1,3,8
1,3,8,2
27
Evaluating Postfix
Evaluate 6 2 3 + - 3 8 2 / + * 2 3 +
Input
6
2
3
+
3
8
2
/
11/10/2014
op1
op2
value
2
6
6
6
6
8
3
5
5
5
5
2
5
1
1
1
1
4
stack
6
6,2
6,2,3
6,5
1
1,3
1,3,8
1,3,8,2
1,3,4
28
Evaluating Postfix
Evaluate 6 2 3 + - 3 8 2 / + * 2 3 +
Input
6
2
3
+
3
8
2
/
+
11/10/2014
op1
op2
value
2
6
6
6
6
8
3
3
5
5
5
5
2
4
5
1
1
1
1
4
7
stack
6
6,2
6,2,3
6,5
1
1,3
1,3,8
1,3,8,2
1,3,4
1,7
29
Evaluating Postfix
Evaluate 6 2 3 + - 3 8 2 / + * 2 3 +
Input
6
2
3
+
3
8
2
/
+
*
11/10/2014
op1
op2
value
2
6
6
6
6
8
3
1
3
5
5
5
5
2
4
7
5
1
1
1
1
4
7
7
stack
6
6,2
6,2,3
6,5
1
1,3
1,3,8
1,3,8,2
1,3,4
1,7
7
30
Evaluating Postfix
Evaluate 6 2 3 + - 3 8 2 / + * 2 3 +
Input
6
2
3
+
3
8
2
/
+
*
2
11/10/2014
op1
op2
value
2
6
6
6
6
8
3
1
1
3
5
5
5
5
2
4
7
7
5
1
1
1
1
4
7
7
7
stack
6
6,2
6,2,3
6,5
1
1,3
1,3,8
1,3,8,2
1,3,4
1,7
7
7,2
31
Evaluating Postfix
Evaluate 6 2 3 + - 3 8 2 / + * 2 3 +
Input
6
2
3
+
3
8
2
/
+
*
2
11/10/2014
op1
op2
value
2
6
6
6
6
8
3
1
1
7
3
5
5
5
5
2
4
7
7
2
5
1
1
1
1
4
7
7
7
49
stack
6
6,2
6,2,3
6,5
1
1,3
1,3,8
1,3,8,2
1,3,4
1,7
7
7,2
49
32
Evaluating Postfix
Evaluate 6 2 3 + - 3 8 2 / + * 2 3 +
Input
6
2
3
+
3
8
2
/
+
*
2
3
11/10/2014
op1
op2
value
2
6
6
6
6
8
3
1
1
7
7
3
5
5
5
5
2
4
7
7
2
2
5
1
1
1
1
4
7
7
7
49
49
CIIT Sahiwal Campus
stack
6
6,2
6,2,3
6,5
1
1,3
1,3,8
1,3,8,2
1,3,4
1,7
7
7,2
49
49,3
33
Evaluating Postfix
Evaluate 6 2 3 + - 3 8 2 / + * 2 3 +
Input
6
2
3
+
3
8
2
/
+
*
2
3
+
11/10/2014
op1
op2
value
2
6
6
6
6
8
3
1
1
7
7
49
3
5
5
5
5
2
4
7
7
2
2
3
5
1
1
1
1
4
7
7
7
49
49
52
CIIT Sahiwal Campus
stack
6
6,2
6,2,3
6,5
1
1,3
1,3,8
1,3,8,2
1,3,4
1,7
7
7,2
49
49,3
52
34
Evaluating Postfix
Evaluate 6 2 3 + - 3 8 2 / + * 2 3 +
Input
6
2
3
+
3
8
2
/
+
*
2
3
+
11/10/2014
op1
op2
value
2
6
6
6
6
8
3
1
1
7
7
49
3
5
5
5
5
2
4
7
7
2
2
3
5
1
1
1
1
4
7
7
7
49
49
52
CIIT Sahiwal Campus
stack
6
6,2
6,2,3
6,5
1
1,3
1,3,8
1,3,8,2
1,3,4
1,7
7
7,2
49
49,3
52
35
36
37
38
11/10/2014
39
40
11/10/2014
stack
41
11/10/2014
stack
+
42
11/10/2014
stack
+
+
43
11/10/2014
stack
+
+
+*
44
11/10/2014
stack
+
+
+*
+*
45
11/10/2014
stack
+
+
+*
+*
+
46
stack
+
+
+*
+*
+
47
48
49
50