sorted lists and their implementations chapter 12 data structures and problem solving with c++:...

28
Sorted Lists and Their Implementations Chapter 12 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Upload: kenneth-mcdonald

Post on 15-Jan-2016

222 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Sorted Lists and Their Implementations Chapter 12 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Sorted Lists and Their Implementations

Chapter 12

Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Page 2: Sorted Lists and Their Implementations Chapter 12 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Contents

• Specifying the ADT Sorted List

• Link-Based Implementation

• Implementations That Use the ADT List

Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Page 3: Sorted Lists and Their Implementations Chapter 12 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Specifying the ADT Sorted List

• The ADT sorted list maintains its entries in sorted order.

• It is a container of items that determines and maintains order of entries by their values.

Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Page 4: Sorted Lists and Their Implementations Chapter 12 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Specifying the ADT Sorted List

• Test whether sorted list is empty.

• Get number of entries in sorted list.

• Insert entry into a sorted list.

• Remove given entry sorted list.

• Remove entry at given position.

• Remove all entries.

• Look at (get) th entry at a given position

• Get position of a given entry.Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Page 5: Sorted Lists and Their Implementations Chapter 12 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Specifying the ADT Sorted List

FIGURE 12-1 UML diagram for the ADT sorted list

Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Page 6: Sorted Lists and Their Implementations Chapter 12 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Specifying the ADT Sorted List

• View C++ interface in Listing 12-1 Formalizes initial specifications of ADT sorted

list

• ADT sorted list can add, remove, or locate entry, given entry as argument

• Sorted list will not allow add or replacement of entry by position

.htm code listing files must be in the same folder as the .ppt files

for these links to work

.htm code listing files must be in the same folder as the .ppt files

for these links to work

Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Page 7: Sorted Lists and Their Implementations Chapter 12 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

A Link-Based Implementation

• View header file for linkSortedList,Listing 12-2

• Begin Implementation: Copy Constructor

Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Page 8: Sorted Lists and Their Implementations Chapter 12 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

A Link-Based Implementation

Method copyChain

Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Page 9: Sorted Lists and Their Implementations Chapter 12 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

A Link-Based Implementation

FIGURE 12-2 Places to insert strings into a sorted chain of linked nodes

Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Page 10: Sorted Lists and Their Implementations Chapter 12 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

A Link-Based Implementation

Method insertSorted

Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Page 11: Sorted Lists and Their Implementations Chapter 12 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

A Link-Based Implementation

Private method getNodeBefore

Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Page 12: Sorted Lists and Their Implementations Chapter 12 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Implementations That Use the ADT List

• Containment

• Public inheritance

• Private inheritance

Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Page 13: Sorted Lists and Their Implementations Chapter 12 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Containment

FIGURE 12-3 An instance of a sorted list that contains a list of its entries

Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Page 14: Sorted Lists and Their Implementations Chapter 12 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Containment

FIGURE 12-4 SortedListHasA is

composed of an instance of the class LinkedList

View header file source code, Listing 12-3

Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Page 15: Sorted Lists and Their Implementations Chapter 12 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Containment

Constructors

Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Page 16: Sorted Lists and Their Implementations Chapter 12 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Containment

Destructor

Method insertSorted

Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Page 17: Sorted Lists and Their Implementations Chapter 12 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Containment

• Methods isEmpty , getLength , remove, clear , and getEntry of ADT sorted list has same specifications as in ADT list

• Example, method remove

Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Page 18: Sorted Lists and Their Implementations Chapter 12 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Efficiency Issues

FIGURE 12-5 The worst-case efficiencies of ADT list operations for array-based

and linkbased implementations

Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Page 19: Sorted Lists and Their Implementations Chapter 12 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Efficiency Issues

FIGURE 12-6 The worst-case efficiencies of the ADT sorted list operations when implemented using an

instance of the ADT list

Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Page 20: Sorted Lists and Their Implementations Chapter 12 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Public Inheritance

FIGURE 12-7 SortedListIsA as a

descendant of LinkedList

Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Page 21: Sorted Lists and Their Implementations Chapter 12 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Public Inheritance

• View header file, Listing 12-4

• Implementation – constructors, destructor

Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Page 22: Sorted Lists and Their Implementations Chapter 12 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Public Inheritance

• Method insertedSorted

Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Page 23: Sorted Lists and Their Implementations Chapter 12 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Public Inheritance

• Method removeSorted

Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Page 24: Sorted Lists and Their Implementations Chapter 12 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Public Inheritance

• Method getPosition

Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Page 25: Sorted Lists and Their Implementations Chapter 12 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Public Inheritance

• Overridden method insert

Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Page 26: Sorted Lists and Their Implementations Chapter 12 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Private Inheritance

• View header file for SortedListAsA, Listing 12-5

• Implementation Method getEntry

Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Page 27: Sorted Lists and Their Implementations Chapter 12 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Private Inheritance

FIGURE 12-8 The SortedListAsA class

implemented in terms of the LinkedList class

Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

Page 28: Sorted Lists and Their Implementations Chapter 12 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013

End

Chapter 12

Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013