1 / 25

Welcome to CIS 068 !

Welcome to CIS 068 !. Lesson 11: Data Structures 2. Overview. Description, Usage and Application of Queues and Stacks. Queues. FIFO (first in first out) Structure. in. 3. 2. 1. out. Queues. Java Interface. Queues: Implementation 1. 1. Implementation as Linked List. in. out. 3.

callum
Download Presentation

Welcome to CIS 068 !

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. Welcome to CIS 068 ! Lesson 11: Data Structures 2 CIS 068

  2. Overview • Description, Usage and Application of • Queues and Stacks CIS 068

  3. Queues • FIFO (first in first out) Structure in 3 2 1 out CIS 068

  4. Queues • Java Interface CIS 068

  5. Queues: Implementation 1 • 1. Implementation as Linked List in out 3 2 1 (null) CIS 068

  6. Adding an Element in out in out in out (null) 1 2 1 (null) (null) • Adding an element E: • If in == null: in = E, out = E, E.link = null • else in.link = E, in = E, E.link = null CIS 068

  7. Removing an Element in out in out in out 2 1 2 (null) (null) (null) • Removing an element: • If out == null throw EmptyQueueException • else • E=out, out=out.link • If out = null: in = null • return E CIS 068

  8. Queues: Implementation 2 2. Implementation as Circular Array Capacity = 6 Index ! 3 4 5 in --- out 1 2 size = 5 List-Size = 5 CIS 068

  9. Circular Array: Adding an Element E in out out 9 9 10 10 11 11 12 12 13 13 E=14 in 14 --- size = 6 size = 5 If size == capacity return error (or increase capacity automatically) else array[in]=E size++ in = (in+1)%capacity CIS 068

  10. Circular Array: Removing an Element out --- 9 out 10 10 11 11 12 12 13 13 in in --- --- size = 4 size = 5 If size == 0 throw EmptyQueueException else E = array[out] size -- out = (out+1)%capacity CIS 068

  11. Stacks • LIFO (first in first out) Structure top 3 2 1 CIS 068

  12. Stacks Java Interface CIS 068

  13. Stack: Implementation 1 • 1. Implementation as Linked List top 1 2 3 (null) CIS 068

  14. Adding an Element E 1 2 top (null) 1 2 E=3 top (null) Adding an Element E: E.link = top top = E CIS 068

  15. Removing an Element 1 2 3 top (null) 1 2 top (null) return 3 Removing an Element E: if top==null throw EmptyQueueException else E=top top = top.link return E CIS 068

  16. Stack: Implementation 2 • 2. Implementation as Array Capacity = 6 Index ! --- --- top 4 3 2 1 CIS 068

  17. Adding / Removing --- --- top 4 3 2 1 Adding an Element E: If top == capacity return error (or increase capacity automatically) else array[top] = E top ++ Removing an Element: If top == 0 throw EmptyQueueException else top -- return array[top] CIS 068

  18. Application 1 • Checking for Balanced Parantheses • Task: • Determine whether expression is balanced with respect to parantheses • Allow for different symbols of parentheses: • ( ) • [ ] • { } CIS 068

  19. Algorithm CIS 068

  20. Algorithm • Expression: • (a+{b-c}*[d+(a+b)) • Stack: • ( • ({ • ( • ([ • ([( • ([ Error ! CIS 068

  21. Application 2 Evaluating a Postfix Expression Postfix expression: Why ? No brackets necessary ! CIS 068

  22. PN / RPN • Prefix / Postfix Expression History • PREfix Notation (also called Polish Notation) invented in the 1920's by Polish mathematician Jan Lukasiewicz, • writing operators in front of their operands, instead of between them, makes brackets unnecessary • Postfix Expression = Reverse Polish Notation (RPN): operators appear behind their operands • Proposed in the late 1950's by the Australian philosopher and early computer scientist Charles L. Hamblin • Advantage: the operators appear in the order required for computation. CIS 068

  23. HP9100A Engineers at the Hewlett-Packard company realised that RPN could be used to simplify the electronics of their calculators at the expense of a little learning by the user. The first "calculator" to use RPN was the HP9100A, which was introduced in 1968 Price: 4900$ CIS 068

  24. Evaluation Algorithm • Evaluate Expression from left to right • If symbol read is operand: push onto the stack • If symbol read is operator: • pop two operators • Evaluate using operator • Push result on stack • Final value on stack is final result • (remark: works only on binary operators) CIS 068

  25. Evaluation Algorithm Example CIS 068

More Related