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 ID: 656874
Download Presentation The PPT/PDF document "4. LinkedList Yan Shi CS/SE 2630 Lectur..." is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.
Slide1
4. LinkedList
Yan Shi
CS/SE 2630 Lecture NotesSlide2
Linked List
Unsorted List
Sorted List
Double linked list
Circular linked listSlide3
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) .Slide4
ADT Unsorted List Operations
Transformers
MakeEmpty
PutItem DeleteItemObservers IsFullGetLengthGetItem Iterators ResetList GetNextItem
change state
observe state
process all Slide5
class
UnsortedType
<char>
MakeEmpty
~UnsortedType
DeleteItem
.
.
.
PutItem
UnsortedType
GetItem
GetNextItem
‘
X
’
‘
C
’
‘
L
’
Private data:
length
3
listData
currentPos
?Slide6
Inserting
‘
B
’
into an Unsorted List
‘
X
’
‘
C
’
‘
L
’
Private data:
length
3
listData
currentPos
?Slide7
location = new
NodeType
;
Private data:
length
3
listData
currentPos ?
item
location
‘
B
’
‘
X
’
‘
C
’
‘
L
’Slide8
location->info = item ;
Private data:
length
3
listData
currentPos
?
item
location
‘
B
’
‘
B
’
‘
X
’
‘
C
’
‘
L
’Slide9
location->next = listData ;
Private data:
length
3
listData
currentPos
?
item
location
‘
B
’
‘
B
’
‘
X
’
‘
C
’
‘
L
’Slide10
listData = location ;
Private data:
length
3
listData
currentPos
?
item
location
‘
B
’
‘
B
’
‘
X
’
‘
C
’
‘
L
’Slide11
length++ ;
Private data:
length
4
listData
currentPos
?
item
location
‘
B
’
‘
B
’
‘
X
’
‘
C
’
‘
L
’Slide12
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
GetNextItemSlide13
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.Slide14
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.Slide15
class
SortedType
<char>
MakeEmpty
~SortedType
DeleteItem
.
.
.
InsertItem
SortedType
RetrieveItem
GetNextItem
‘
C
’
‘
L
’
‘
X
’
Private data:
length
3
listData
currentPos
?Slide16
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.Slide17
The Inchworm EffectSlide18
Inserting
‘
S
’
into a Sorted List
‘
C
’
‘
L
’
‘
X
’
Private data:
length
3
listData
currentPos
?
predLoc location
moreToSearch Slide19
Finding proper position for
‘
S
’
‘
C
’
‘
L
’
‘
X
’
Private data:
length
3
listData
currentPos
?
predLoc location
NULL
moreToSearch trueSlide20
Finding proper position for
‘
S
’
‘
C
’
‘
L
’
‘
X
’
Private data:
length
3
listData
currentPos ?
predLoc location
moreToSearch trueSlide21
Finding Proper Position for
‘
S
’
‘
C
’
‘
L
’
‘
X
’
Private data:
length
3
listData
currentPos
?
predLoc location
moreToSearch
falseSlide22
Inserting
‘
S
’
into Proper Position
‘
C
’
‘
L
’
‘
X
’
Private data:
length
4
listData
currentPos
predLoc location
moreToSearch false
‘
S
’Slide23
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. Slide24
External Pointer to the Last NodeSlide25
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 if the data to be added to the linked list is presorted?Slide26
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.
Slide27
Linking the New Node into the ListSlide28
Deleting from a Doubly Linked ListSlide29
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.Slide30
A Sorted list Stored in an Array of NodesSlide31
An Array with Linked List of Values and Free Space