chapter 3

14
CHAPTER 3 Stacks

Upload: omana

Post on 24-Feb-2016

42 views

Category:

Documents


0 download

DESCRIPTION

Chapter 3. Stacks. Chapter Objectives. To learn about the stack data type and how to use it To understand how Java implements a stack To learn how to implement a stack using an underlying array or linked list - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Chapter 3

CHAPTER 3Stacks

Page 2: Chapter 3

Chapter Objectives To learn about the stack data type and how to use it To understand how Java implements a stack To learn how to implement a stack using an

underlying array or linked list To see how to use a stack to perform various

applications, including finding palindromes, testing for balanced (properly nested) parentheses, and evaluating arithmetic expressions

Page 3: Chapter 3

Section 3.1

Stack Abstract Data Type

Page 4: Chapter 3

The Stack ADT (§4.2) A stack is one of the most

commonly used data types. The Stack ADT stores

arbitrary objects Insertions and deletions

follow the last-in first-out scheme (LIFO)

Think of a spring-loaded pez dispenser

Main stack operations: push(object): inserts an

element object pop(): removes and

returns the last inserted element

Auxiliary stack operations: object peek(): returns

the last inserted element without removing it

integer size(): returns the number of elements stored

boolean empty(): indicates whether no elements are stored

Page 5: Chapter 3

Section 3.2

Stack Applications

Page 6: Chapter 3

Balanced Parentheses When analyzing arithmetic expressions,

it is important to determine whether an expression is balanced with respect to parentheses

( a + b * ( c / ( d – e ) ) ) + ( d / e )

The problem is further complicated if braces or brackets are used in conjunction with parentheses

The solution is to use stacks!

Page 7: Chapter 3

7

Parentheses Matching Each “(”, “{”, or “[” must be paired with

a matching “)”, “}”, or “[” correct: ( )(( )){([( )])} correct: ((( )(( )){([( )])} incorrect: )(( )){([( )])} incorrect: ({[ ])} incorrect: (

Page 8: Chapter 3

8

Figure 6.2Traces of the algorithm that checks for balanced braces

Page 9: Chapter 3

Section 3.3

Implementing a Stack

Page 10: Chapter 3

10

Figure 6.4An array-based implementation

Page 11: Chapter 3

11

Figure 6.5A reference-basedimplementation

Page 12: Chapter 3

Section 3.4

Additional Stack Applications

Page 13: Chapter 3

13

Figure 6.7The action of a postfix calculator when evaluating the expression 2 * (3 + 4)

Page 14: Chapter 3

14

Figure 6.8A trace of the algorithm that converts the infix expression a - (b + c * d)/e to postfix form