computer science and software engineering university of wisconsin - platteville 5. linkedlist yan...
TRANSCRIPT
Computer Science and Software EngineeringUniversity of Wisconsin - Platteville
5. LinkedList
Yan ShiCS/SE 2630 Lecture Notes
Linked List
Unsorted List Sorted List Double linked list Circular linked list
Sorted and Unsorted Lists
UNSORTED LIST
Elements are placed into the list in no particular order.
SORTED LIST
List elements are in an order that is sorted in some way -- either numerically or alphabetically by the elements themselves, or by a component of the element (called a KEY member) .
ADT Unsorted List Operations
Transformers – MakeEmpty – PutItem – DeleteItem
Observers – IsFull– GetLength– GetItem
Iterators – ResetList – GetNextItem
change state
observe state
process all
class UnsortedType<char>
MakeEmpty
~UnsortedType
DeleteItem . . .
PutItem
UnsortedType
GetItem
GetNextItem
‘X’ ‘C’ ‘L’
Private data:
length 3
listData
currentPos ?
Inserting ‘B’ into an Unsorted List
‘X’ ‘C’ ‘L’
Private data:
length 3
listData
currentPos ?
location = new NodeType;
Private data:
length 3
listData
currentPos ?
item
location
‘B’
‘X’ ‘C’ ‘L’
location->info = item ;
Private data:
length 3
listData
currentPos ?
item
location
‘B’
‘B’
‘X’ ‘C’ ‘L’
location->next = listData ;
Private data:
length 3
listData
currentPos ?
item
location
‘B’
‘B’
‘X’ ‘C’ ‘L’
listData = location ;
Private data:
length 3
listData
currentPos ?
item
location
‘B’
‘B’
‘X’ ‘C’ ‘L’
length++ ;
Private data:
length 4
listData
currentPos ?
item
location
‘B’
‘B’ ‘X’ ‘C’ ‘L’
Sorted Type Class Interface Diagram
SortedType class
IsFull
GetLength
ResetList
DeleteItem
InsertItem
MakeEmpty
GetItem
Private data:
length
info [ 0 ] [ 1 ] [ 2 ]
[MAX_ITEMS-1]
currentPos
GetNextItem
InsertItem algorithm for Sorted Array Based List
• Find proper location for the new element in the sorted list.
• Create space for the new element by moving down all the list elements that will follow it.
• Put the new element in the list.
• Increment length.
DeleteItem algorithm for Sorted Array Based List
• Find the location of the element to be deleted from the sorted list.
• Eliminate space occupied by the item by moving up all the list elements that follow it.
• Decrement length.
class SortedType<char>
MakeEmpty
~SortedType
DeleteItem . . .
InsertItem
SortedType
RetrieveItem
GetNextItem
‘C’ ‘L’ ‘X’
Private data:
length 3
listData
currentPos ?
InsertItem algorithm for Sorted Linked List
• Find proper position for the new element in the sorted list using two pointers predLoc and location, where predLoc trails behind location.
• Obtain a node for insertion and place item in it.
• Insert the node by adjusting pointers.
• Increment length.
The Inchworm Effect
Inserting ‘S’ into a Sorted List
‘C’ ‘L’ ‘X’
Private data:
length 3
listData
currentPos ?
predLoc location
moreToSearch
Finding proper position for ‘S’
‘C’ ‘L’ ‘X’
Private data:
length 3
listData
currentPos ?
predLoc location
NULL
moreToSearch true
Finding proper position for ‘S’
‘C’ ‘L’ ‘X’
Private data:
length 3
listData
currentPos ?
predLoc location
moreToSearch true
Finding Proper Position for ‘S’
‘C’ ‘L’ ‘X’
Private data:
length 3
listData
currentPos ?
predLoc location
moreToSearch false
Inserting ‘S’ into Proper Position
‘C’ ‘L’ ‘X’
Private data:
length 4
listData
currentPos
predLoc location
moreToSearch false
‘S’
What is a Circular Linked List?
• A circular linked list is a list in which every node has a successor; the “last” element is succeeded by the “first” element.
External Pointer to the Last Node
Why Circular Linked list?
It doesn’t make any operation much shorter or simpler…
It is useful for applications that require access to both ends of the list.
What is a Doubly Linked List?
• A doubly linked list is a list in which each node is linked to both its successor and its predecessor.
Linking the New Node into the List
Deleting from a Doubly Linked List
What are Header and Trailer Nodes?
• A Header Node is a node at the beginning of a list that contains a key value smaller than any possible key.
• A Trailer Node is a node at the end of a list that contains a key larger than any possible key.
• Both header and trailer are placeholding nodes used to simplify list processing: we never have to handle special cases when inserting/deleting the first/end node.
A Sorted list Stored in an Array of Nodes
An Array with Linked List of Values and Free Space