Stack Data Structure By Imam M Shofi What
Stack Data Structure By : Imam M Shofi
What is stack? n n A stack is a limited version of an array. New elements, or nodes as they are often called, can be added to a stack and removed from a stack only from one end. Access system a stack is referred to as a LIFO structure (Last-In First. Out) Some illustrations: stack of satay stack of CDs
Stacks operations n Push : adds a new node Push(X, S) add the value X to the TOP of stack n Pop : removes a node Pop(S) removes the TOP node and returns its value n Is. Empty empty : reports whether the stack is Is. Empty(S) report whether the stack S is empty n Is. Full : reports whether the stack is full Is. Full(S) report whether the stack S is full n Initialize : creates/initializes the stack Initialize(S) create a new empty stack named S n Destroy : deletes the contents of the stack (may be implemented by reinitializing the stack) Destroy(S) deletes the contents of the stack S
Illustration/example Operation Stack’s contents TOP value 1. Initialiaze(S) <empty> 0 2. Push(‘a’, S) 3. Push(‘b’, S) 4. Push(‘c’, S) 5. Pop(S) 6. Push(‘d’, S) 7. Push(‘e’, S) 8. Pop(S) 9. Pop(S) 10. Pop(S) a ab abc ab abde abd ab a 1 2 3 4 3 2 1
Exercise n n What would the state of the stack be after the following operations: create stack push A onto stack push F onto stack pop item from stack push B onto stack pop item from stack Show the state of the stack and the value of each variable after execution of each of the following statements: A=5 B=3 C=7 (a) create stack push A onto stack push C*C onto stack pop item from stack and store in B push B+A onto stack pop item from stack and store in A pop item from stack and store in B (b) create stack push B onto stack push C onto stack push A onto stack A=B*C push A+C onto stack pop item from stack and store in A pop item from stack and store in B pop item from stack and store in C
Converting between notations INFIX to PREFIX : (A+B) – (C*D) n l l l Do the first brace: (A+B), the PREFIX is +AB Do the second brace: (C*D), the PREFIX is *CD The end is operator -: +AB - *CD, the PREFIX is -+AB*CD INFIX to POSTFIX : (A+B) – (C*D) n l l l Do the first brace: (A+B), the POSTFIX is AB+ Do the second brace: (C*D), the POSTFIX is CD* The end is operator -: AB+ - CD*, the PREFIX is AB+CD*- PREFIX to INFIX : +/*A B C D n l l l Find the first operator: *, take 2 operands before the operator (A and B), the INFIX is (A*B) Find the second operator: /, take 2 operands before the operator (A*B and C), the INFIX is ((A*B)/C) Find the third operator: +, take 2 operands before the operator (((A*B)/C) and D), the INFIX is ((A*B)/C)+D
Converting between notations(2) PREFIX to POSTFIX : +/*A B C D n l l l Find the first operator: *, take 2 operands before the operator (A and B), the POSTFIX is AB* Find the second operator: /, take 2 operands before the operator (AB* and C), the POSTFIX is AB*C/ Find the third operator: +, take 2 operands before the operator (AB*C/ and D), the POSTFIX is AB*C/D+ POSTFIX to INFIX : ABCD*/- n l l l Find the first operator: *, take 2 operands before the operator (C and D), the INFIX is (C*D) Find the second operator: /, take 2 operands before the operator ((C*D) and B), the INFIX is (B/(C*D) Find the third operator: -, take 2 operands before the operator ((B/(C*D) and A), the INFIX is A – (B/(C*D) POSTFIX to PREFIX : ABCD*/- n l l l Find the first operator: *, take 2 operands before the operator (C and D), the PREFIX is *CD Find the second operator: /, take 2 operands before the operator (*CD and B), the PREFIX is /B*CD Find the third operator: -, take 2 operands before the operator (/B*CD and A), the PREFIX is -A /B*CD
Exercise: Converting 1. Convert these INFIX to PREFIX and POSTFIX : a) b) c) 2. Convert these PREFIX to INFIX and POSTFIX : a) b) c) 3. A/B–C/D (A + B) ^ 3 – C * D A ^ (B + C) +–/ABC^DE –+DE/XY ^+23–CD Convert these POSTFIX to INFIX and PREFIX : a) b) c) ABC+– GH+IJ/* AB^CD+–
- Slides: 8