230 likes | 354 Views
Abstract Data Types Sir Joseph Lindo University of the Cordilleras. Abstract Data Types. Array. Stack. ADT. All insertions and deletions are made at one end top of the stack Last In First Out (LIFO) Some analogies Stack of trays Books in a table. List. Stack. Stack. Queue.
E N D
Abstract Data Types Sir Joseph Lindo University of the Cordilleras
Abstract Data Types Array Stack ADT • All insertions and deletions are made at one end • top of the stack • Last In First Out (LIFO) • Some analogies • Stack of trays • Books in a table List Stack Stack Queue Case
Abstract Data Types Array Stack Application ADT Arithmetic Expression INFIX PREFIX POSTFIX List Stack Stack Queue Case
Abstract Data Types -- end -- Sir Joseph Lindo University of the Cordilleras
Abstract Data Types -- end na -- Sir Joseph Lindo University of the Cordilleras
Online Activity Stack in real life • Think of real life activities, scenarios or things that applies the concept stack. • Post answer as comment on our facebook group, in your specified block (F,D and G) • You are not allowed to have the same answer
Stack Major Operations • PUSH (Object) • - add object into the top of the stack • POP • - remove object into the top of the stack • Others • isEmpty • isFull • PEEK
Stack INFIX Notation To add A, B, we write A+B To multiply A, B, we write A*B The operators ('+' and '*') go in between the operands ('A' and 'B')
Stack PREFIX Notation Instead of saying "A plus B", we could say "add A,B " and write + A B "Multiply A,B" would be written * A B
Stack POSTFIX Notation Another alternative is to put the operators after the operands as in A B + and A B *
Stack Notations The terms infix, prefix, and postfix tell us whether the operators go between, before, or after the operands. PreAInBPost
Stack Notations Parenthesis Evaluate 2+3*5. + First: (2+3)*5 = 5*5 = 25 * First: 2+(3*5) = 2+15 = 17 INFIX notation requires Parentheses.
Stack Notations What about PREFIX? + 2 * 3 5 = = + 2 * 3 5 = + 2 15 = 17 * + 2 3 5 = = * + 2 3 5 = * 5 5 = 25 No parentheses needed!
Stack Notations What about POSTFIX? 2 3 5 * + = = 2 3 5 * + = 2 15 + = 17 2 3 + 5 * = = 2 3 + 5 * = 5 5 * = 25 No parentheses needed here either!
Stack Notations Conclusion Infix is the only notation that requires parentheses in order to change the order in which the operations are done.
Stack FPE A FPE has exactly one set of Parentheses enclosing each operator and its operands. Which is fully parenthesized? ( A + B ) * C ( ( A + B) * C ) ( ( A + B) * ( C ) )
Stack INFIX to PREFIX Move each operator to the left of its operands & remove the parentheses: ( ( A + B) * ( C + D ) ) ( + A B * ( C + D ) ) • * + A B ( C + D ) • * + A B + C D • Order of operands does not change!
Stack INFIX to PREFIX Practice: ( ( A + ( B – D ) ) * C) ( ( ( C * B ) / ( E + B) )/ F )
Stack INFIX to POSTFIX Move each operator to the left of its operands & remove the parentheses: ( ( A + B) * ( C + D ) ) ( A B + * ( C + D ) ) A B + (C + D ) * A B + C D + * Order of operands does not change!
Stack INFIX to PREFIX Practice: ( ( A + ( B – D ) ) * C) ( ( ( C * B ) / ( E + B) )/ F )
Abstract Data Types -- end -- Sir Joseph Lindo University of the Cordilleras
Abstract Data Types -- end na -- Sir Joseph Lindo University of the Cordilleras