chapter 8 lists. copyright © 2005 pearson addison-wesley. all rights reserved. 8-2 chapter...

60
Chapter 8 Lists

Post on 21-Dec-2015

225 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Chapter 8

Lists

Page 2: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2

Chapter Objectives

• Examine list processing and various ordering techniques

• Define a list abstract data type

• Demonstrate how a list can be used to solve problems

• Examine various list implementations

• Compare list implementations

Page 3: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-3

Lists• Lists are linear collections, like stacks and

queues, but are more flexible

• Adding and removing elements in lists are not restricted by the collection structure

• That is, they don't have to operate on one end or the other

• We will examine three types of list collections:– ordered lists

– unordered lists

– indexed lists

Page 4: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-4

Ordered Lists

• The elements in an ordered list are ordered by some inherent characteristic of the elements– names in alphabetical order

– scores in ascending order

• Therefore, the elements themselves determine where they are stored in the list

Page 5: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-5

FIGURE 8.1 A conceptual view of an ordered list

Page 6: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-6

Unordered Lists

• There is an order to the elements in an unordered list, but that order is not based on element characteristics

• The user of the list determines the order of the elements

• A new element can be put on the front or the rear of the list, or it can be inserted after a particular element already in the list

Page 7: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-7

FIGURE 8.2 A conceptual view of an unordered list

Page 8: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-8

Indexed Lists

• In an indexed list, elements are referenced by their numeric position in the list

• Like an unordered list, there is no inherent relationship among the elements

• The user can determine the order

• Every time the list changes, the indexes are updated

Page 9: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-9

FIGURE 8.3 A conceptual view of an indexed list

Page 10: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-10

List Operations

• There are several operations common to all three list types

• These include removing elements in various ways and checking the status of the list

• The key differences between the list types involve the way elements are added

Page 11: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-11

FIGURE 8.4 The common operations on a list

Page 12: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-12

FIGURE 8.5 The operation particular to an ordered list

Page 13: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-13

FIGURE 8.6 The operations particular to an unordered list

Page 14: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-14

FIGURE 8.7 The operations particular to an indexed list

Page 15: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-15

List Operations

• As with other collections, we use Java interfaces to define the collection operations

• Recall that interfaces can be defined via inheritance (derived from other interfaces)

• We define the common list operations in one interface, then derive three others from it that define the interfaces of the three list types

Page 16: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-16

FIGURE 8.8 The various list interfaces

Page 17: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-17

Listing 8.1

Page 18: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-18

Listing 8.1 (cont.)

Page 19: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-19

Listing 8.2

Page 20: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-20

Listing 8.3

Page 21: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-21

Listing 8.4

Page 22: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-22

Listing 8.4 (cont.)

Page 23: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-23

Tournament Maker

• Let's use an ordered list to help manage a bowling tournament

• Teams are ordered by their number of wins in the regular season

• To create the first round match-ups, the team with the best record is matched against the team with the worst record

• The second best team is matched against the second worst team, etc.

Page 24: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-24

FIGURE 8.9 Bowling league team names and number of wins

Page 25: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-25

FIGURE 8.10 Sample tournament layout for a bowling league tournament

Page 26: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-26

Tournament Maker

• A class that represents a team will be Comparable, based on their number of wins

Page 27: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-27

Listing 8.5

Page 28: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-28

Listing 8.6

Page 29: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-29

Listing 8.6 (cont.)

Page 30: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-30

Listing 8.6 (cont.)

Page 31: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-31

Listing 8.7

Page 32: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-32

Listing 8.7 (cont.)

Page 33: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-33

Listing 8.7 (cont.)

Page 34: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-34

Listing 8.7 (cont.)

Page 35: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-35

FIGURE 8.11 UML description of the Tournament class

Page 36: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-36

The Josephus Problem

• In a Josephus problem, a set of elements are arranged in a circle

• Starting with a particular element, every ith element is removed

• Processing continues until there is only one element left

• The question: given the starting point and remove count (i), which element is left?

Page 37: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-37

Listing 8.8

Page 38: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-38

Listing 8.8 (cont.)

Page 39: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-39

Listing 8.8 (cont.)

Page 40: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-40

FIGURE 8.12 UML description of the Josephus program

Page 41: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-41

Implementing Lists with Arrays• An array implementation of a list could follow

strategies similar to those used for a queue

• We could fix one end of the list at index 0 and shift as needed when an element is added or removed

• Or we could use a circular array to avoid the shift at one end

• However, there is no avoiding a shift when an element in the middle is added or removed

• Let's examine the fixed version

Page 42: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-42

FIGURE 8.13 An array implementation of a list

Page 43: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-43

ArrayList - the remove Operation

Page 44: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-44

ArrayList - the find Operation

Page 45: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-45

ArrayList - the contains Operation

Page 46: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-46

ArrayOrderedList - the add Operation

Page 47: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-47

Implementing lists with links

• As with stack and queue, we can implement a list collection with an underlying linked list

• All operations can be accomplished using techniques similar to ones we've already explored

• However, let's examine the remove operation with this traditional approach, then alter the underlying representation for comparison

Page 48: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-48

LinkedList - the remove Operation

Page 49: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-49

LinkedList - the remove Operation

Page 50: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-50

LinkedList - the remove Operation

Page 51: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-51

Doubly Linked Lists

• A doubly linked list has two references in each node, one to the next element in the list and one to the previous element

• This makes moving back and forth in a list easier, and eliminates the need for a previous reference in particular algorithms

• There is, however, a bit more overhead when managing the list

Page 52: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-52

Listing 8.9

Page 53: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-53

Listing 8.9 (cont.)

Page 54: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-54

Listing 8.9 (cont.)

Page 55: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-55

Listing 8.9 (cont.)

Page 56: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-56

FIGURE 8.14 A doubly linked list

Page 57: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-57

Doubly Linked Lists

• Lets revisit the remove method for linked implementation of a list, this time using a doubly linked list

• Notice how much more elegant the code in this version is compared to our earlier version

• The cost of this elegance is the overhead associated with storing and managing additional links

Page 58: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-58

DoubleList - the remove Operation

Page 59: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-59

DoubleList - the remove Operation

Page 60: Chapter 8 Lists. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-2 Chapter Objectives Examine list processing and various ordering techniques

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 8-60

Analysis of List Implementations

• In both array and linked implementations, many operations are similar in efficiency

• Most are O(1), except when shifting or searching need to occur, in which case they are order O(n)

• In particular situations, the frequency of the need for particular operations may guide the use of one approach over another