Data Structures Stacks Polish Notation Outlines Arithmetic Expressions














- Slides: 14

Data Structures Stacks (Polish Notation)

Outlines • Arithmetic Expressions • Polish Notation • Evaluation of a Postfix Expression • Transforming Infix expression to Postfix Expression • Review Questions

Arithmetic Expressions • Arithmetic Expressions involve constants and operations. • Binary operations have different levels of precedence. – – – First : Second: Third : Exponentiation (^) Multiplication (*) and Division (/) Addition (+) and Subtraction (-)

Example • • Evaluate the following Arithmetic Expression: 5 ^ 2 + 3 * 5 – 6 * 2 / 3 + 24 / 3 + 3 First: 25 + 3 * 5 – 6 * 2 / 3 + 24 / 3 + 3 • Second: 25 + 15 – 4 + 8 + 3 • Third: 47

Polish Notation • Infix Notation: Operator symbol is placed between the two operands. Example: (5 * 3) + 2 & 5 * (3 + 2)

Polish Notation q Polish Notation: The Operator Symbol is placed before its two operands. Example: + A B, * C D, / P Q etc. • Named after the Polish Mathematician Jan Lukasiewicz. • The order in which the operations are to be performed is completely determined by the positions of operators and operands in the expression.

Examples • (A + B) * C = * + ABC • A + (B * C) = + A *BC • (A + B) / (C - D) = / +AB –CD • Also Known as Prefix Notation.

Reverse Polish Notation q Reverse Polish Notation: The Operator Symbol is placed after its two operands. Example: • A B+, C D*, P Q/ etc. Also known as Postfix Notation.

Evaluation of Postfix Expression q P is an arithmetic expression in Postfix Notation. 1. Add a right parenthesis “)” at the end of P. 2. Scan P from left to right and Repeat Step 3 and 4 for each element of P until the sentinel “)” is encountered. 3. 4. If an operand is encountered, put it on STACK. If an operator @ is encountered, then: (A) Remove the two top elements of STACK, where A is the top element and B is the next to top element. (B) Evaluate B @ A. (C) Place the result of (B) back on STACK. [End of if structure. ] [End of step 2 Loop. ] Set VALUE equal to the top element on STACK. Exit. 5. 6.

Review Questions q Evaluate the following Post-fix Expression: o 12 7 3 - / 2 1 5 + * +

Infix to Postfix Transformation 1. 2. 3. 4. 5. 6. 7. POLISH (Q, P) PUSH “(” on to STACK and add “)” to the end of Q. Scan Q from left to right and Repeat steps 3 to 6 for each element of Q until the STACK is empty: If an operand is encountered, add it to P. If a left parenthesis is encountered, push it onto STACK. If an operator is encountered, then: (a) Repeatedly POP from STACK and add to P each operator (On the TOP of STACK) which has the same precedence as or higher precedence than @. (b) Add @ to STACK. [End of If structure. ] If a right parenthesis is encountered, then: (a) Repeatedly POP from STACK and add to P each operator (On the TOP of STACK. ) until a left parenthesis is encountered. (b) Remove the left parenthesis. [Don’t add the left parenthesis to P. ] [End of If Structure. ] [End of step 2 Loop. ] Exit.

Review Questions q Convert the following infix expression to Post-fix: o 12 / (7 -3) + 2 * (1+5) o (5^3) / (3+9) – (5*0) + 2 o A+(B*C-(D/E^F)*G)*H


Review Questions • What is the need of Stacks? • How Array representation of Stack is different from Linked Representation? • How will you handle Overflow and Underflow?