Title: Stack Applications
1Stack Applications
2Arithmetic Expressions
- Arithmetic expressions have
- operands (variables or numeric constants).
- Operators
- Binary , -, , / ,
- Unary -
- Priority convention
- - Unary minus (sign for negative numbers) has
highest priority - , /, have medium priority
- , - have lowest priority
3Infix, Prefix, Postfix
- Example arithmetic expression a b consists of
operands a, b and operator . - Infix notation is format where operator is
specified in between the two operands. ab - Prefix notation is format where operator is
specified before the two operands. a b - Postfix notation is format where operator is
specified after the two operands. Postfix
notation is also called RPN or Reverse Polish
Notation. a b
4Arithmetic Expressions
5Boolean Expressions
- Boolean expressions have
- Operands (variables of boolean type or boolean
constants TRUE, FALSE). - Operators Binary , V, gt, ?
- Unary
- Convention for operator priorities
- has highest priority, has next priority
level, v has next priority level, gt has next
priority level, ? has lowest priority.
6Infix, Prefix, Postfix for Boolean Expressions
- Example Boolean expression a b consists of
operands a, b and operator . - Infix notation is format where operator is
specified in between the two operands. ab - Prefix notation is format where operator is
specified before the two operands. a b - Postfix notation is format where operator is
specified after the two operands. Postfix
notation is also called RPN or Reverse Polish
Notation. a b
7Boolean Expressions
8Evaluating Arithmetic Expressions in Postfix
Notation
- Algorithm
- INPUT list of tokens that are either numbers or
binary arithmetic operators , -,, /, and .
List represents postfix notation of an arithmetic
expression - OUTPUT value of expression.
9- Create an empty stack that will contain operands.
- Take one by one token from the left to right.
- If token is an operand push it to the stack.
- If token is an operator op
- Pop the top item from the stack as operand2.
- Pop again the top item from the stack as
operand1. - Perform operation operand1 op operand2.
- Push result back to stack.
- When all tokens in input expression are processed
stack should contain a single item, which is the
value of expression.
10Evaluate 3 2 - 4
11Evaluating Boolean Expressions in Postfix Notation
- Algorithm is same as for arithmetic expressions
- INPUT list of tokens that are either TRUE or
FALSE or operators , V, gt, ?. List represents
postfix notation of an arithmetic expression. - OUTPUT value of expression that is either TRUE
or FALSE.
12- Create an empty stack that will contain boolean
operands. - Take one by one token from the left to right.
- If token is an operand push it to the stack.
- If token is an operator op
- Pop the top item from the stack as operand2.
- Pop again the top item from the stack as
operand1. - Perform operation operand1 op operand2.
- Push result back to stack.
- When all tokens in input expression are processed
stack should contain a single item, which is the
boolean value of expression.
13Evaluate True True False gt
14ALGORITHM TO CONVERT AN INFIX EXPRESSION TO RPN
- Accepts An infix expression
- Convert the expression to RPN
- Uses a stack to store operations
- Output The RPN expression
15INFIX EXPRESSION TO RPN
Initialize an empty stack of operators. While no
error has occurred and the end of the infix
expression has not been reached, do the
followinga. Get the next input Token (constant,
variable, arithmetic operator, left
and right parenthesis) in the infix
expression.
16INFIX EXPRESSION TO RPN
- b. If Token is(i) a left parenthesis Push it
onto the stack(ii) a right parenthesis Pop and
display stack elements until a left
parenthesis is popped, but do not display it.
(It is an error if the stack becomes empty
with no left parenthesis found.)(iii) an
operator If the stack is empty or - Token
has a higher priority than the top stack,
push Token onto the stack. Otherwise, pop and
display the top stack -
element then repeat the
comparison of Token -
with the new top stack item. A left
parenthesis in the stack is assumed to have a
lower priority than that of operators.(iv) an
operand Display it.
17INFIX EXPRESSION TO RPN
- c. When the end of the infix expression is
reached, pop and display stack items until the
stack is empty.
18Example
- Convert infix expression into postfix
- (71)(6(3-2)) gtgt RPN
19(No Transcript)
20(71)(6(3-2)) gtgt RPN
21(71)(6(3-2)) gtgt RPN
- 7 1 6 3 - displayed
- Stack content
- Add that to display
- 7 1 6 3 - is RPN
22Checking Parenteses
- Create an empty stack
- Until a special symbol appears (indicating the
end of expression) doRead one by one token from
the input expressionIf token is - If the stack is empty push token to the
stack - If the stack is non empty pop a top stack
element - If the popped element is ( or type an
error message such as Rule 2 is not satisfied
at positionOtherwise push it back and push the
token to the stack. -
- (
23Checking Parenteses
- If the stack is empty rule 1 is not satisfied.
Type a message If the stack is not empty pop
the top stack element and If it is then read
next token Otherwise type Rule 1 is not
satisfied at position -
- )
- Other Skip to the next token
- If the stack is non empty after the end of
expression has been encountered then print an
error message such as Rule 1 is violated at the
end of expressionelse Check control
is O.K.