Presentation is loading. Please wait.

Presentation is loading. Please wait.

CIS 068 Welcome to CIS 068 ! Lesson 11: Data Structures 2.

Similar presentations


Presentation on theme: "CIS 068 Welcome to CIS 068 ! Lesson 11: Data Structures 2."— Presentation transcript:

1 CIS 068 Welcome to CIS 068 ! Lesson 11: Data Structures 2

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

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

4 CIS 068 Queues Java Interface

5 CIS 068 Queues: Implementation 1 1. Implementation as Linked List 123 inout (null)

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

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

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

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

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

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

12 CIS 068 Stacks Java Interface

13 CIS 068 Stack: Implementation 1 1. Implementation as Linked List 321 top (null)

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

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

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

17 CIS 068 Adding / Removing 2 top 1 3 4 --- 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]

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

19 CIS 068 Algorithm

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

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

22 CIS 068 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.

23 CIS 068 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$

24 CIS 068 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)

25 CIS 068 Evaluation Algorithm Example


Download ppt "CIS 068 Welcome to CIS 068 ! Lesson 11: Data Structures 2."

Similar presentations


Ads by Google