1 / 8

Stack Data Structure

Stack Data Structure. By : Imam M Shofi. What is stack?. 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.

cleary
Download Presentation

Stack Data Structure

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Stack Data Structure By : Imam M Shofi

  2. What is stack? • 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 CDs stack of satay

  3. Stacks operations • Push : adds a new node Push(X,S)  add the value X to the TOP of stack • Pop : removes a node Pop(S)  removes the TOP node and returns its value • IsEmpty : reports whether the stack is empty IsEmpty(S)  report whether the stack S is empty • IsFull : reports whether the stack is full IsFull(S)  report whether the stack S is full • Initialize : creates/initializes the stack Initialize(S)  create a new empty stack named S • Destroy : deletes the contents of the stack (may be implemented by re-initializing the stack) Destroy(S)  deletes the contents of the stack S

  4. Illustration/example Stack’s contents TOP value Operation 1. Initialiaze(S) <empty> 0 2. Push(‘a’,S) a 1 3. Push(‘b’,S) a b 2 4. Push(‘c’,S) a b c 3 5. Pop(S) a b 2 6. Push(‘d’,S) a b d 3 7. Push(‘e’,S) a b d e 4 8. Pop(S) a b d 3 9. Pop(S) a b 2 10. Pop(S) a 1

  5. Exercise • 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 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

  6. Converting between notations • INFIX to PREFIX : (A+B) – (C*D) • 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) • 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 • 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

  7. Converting between notations(2) • PREFIX to POSTFIX : +/*A B C D • 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*/- • 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*/- • 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

  8. Exercise: Converting • Convert these INFIX to PREFIX and POSTFIX : • A / B – C / D • (A + B) ^ 3 – C * D • A ^ (B + C) • Convert these PREFIX to INFIX and POSTFIX : • + – / A B C ^ D E • – + D E / X Y • ^ + 2 3 – C D • Convert these POSTFIX to INFIX and PREFIX : • A B C + – • G H + I J / * • A B ^ C D + –

More Related