This preview shows pages 1–3. Sign up to view the full content.
CS301 – Data Structures
Lecture No.
07
___________________________________________________________________
Data Structures
Lecture No. 07
Reading Material
Data Structures and Algorithm Analysis in C++
Chapter. 3
3.3.3
Summary
1)
Evaluating postfix expressions
2)
An example
3)
Infix to postfix Conversion
Evaluating postfix expressions
In the previous lecture, we talked about ‘infix and postfix expression’ and tried to
understand how to write the postfix notation of mathematical expressions. A
programmer can write the operators either after the operands i.e. postfix notation or
before the operands i.e. prefix notation. Some of the examples are as under:
Infix
Postfix
A + B
A B +
12 + 60 – 23
12 60 + 23 –
(A + B)*(C – D )
A B + C D – *
A B * C – D + E/F
A B C*D – E F/+
The last expression seems a bit confusing but may prove simple by following the
rules in letter and spirit. In the postfix form, parentheses are not used. Consider the
infix expressions as ‘4+3*5’ and ‘(4+3)*5’. The parentheses are not needed in the
first but are necessary in the second expression. The postfix forms are:
4+3*5
435*+
(4+3)*5
43+5*
In case of not using the parenthesis in the infix form, you have to see the precedence
rule before evaluating the expression. In the above example, if we want to add first
then we have to use the parenthesis. In the postfix form, we do not need to use
parenthesis. The position of operators and operands in the expression makes it clear in
which order we have to do the multiplication and addition.
Now we will see how the infix expression can be evaluated. Suppose we have a
postfix expression. How can we evaluate it? Each operator in a postfix expression
refers to the previous two operands. As the operators are binary (we are not talking
about unary operators here), so two operands are needed for each operator. The nature
of these operators is not affected in the postfix form i.e. the plus operator (+) will
apply on two operands. Each time we read an operand, we will push it on the stack.
We are going to evaluate the postfix expression with the help of stack. After reaching
Page 1 of 8
This preview has intentionally blurred sections. Sign up to view the full version.
View Full Document CS301 – Data Structures
Lecture No.
07
___________________________________________________________________
an operator, we pop the two operands from the top of the stack, apply the operator
and push the result back on the stack. Now we will see an example to comprehend the
working of stack for the evaluation of the postfix form. Here is the algorithm in
pseudo code form. After reading this code, you will understand the algorithm.
Stack s;
// declare a stack
while( not end of input ) {
// not end of postfix expression
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();
We have declared a Stack‘s’. There is a ‘while loop’ along with ‘not end of input’
condition. Here the input is our postfix expression. You can get the expression from
This is the end of the preview. Sign up
to
access the rest of the document.
This note was uploaded on 05/21/2010 for the course CS CS301 taught by Professor Dr.naveed malik during the Spring '10 term at Virtual University of Pakistan.
 Spring '10
 Dr.Naveed Malik
 Data Structures

Click to edit the document details