Linear Linked Structures Part 1

Download Report

Transcript Linear Linked Structures Part 1

COSC 1P03
Linear Linked Structures
A bank is a place where they lend you an umbrella
in fair weather and ask for it back when it begins to
rain.
Robert Frost (1874-1963)
Data Structures and Abstraction
5.1
COSC 1P03
Dynamic Structures
 collections
 limitations of static structures (i.e. arrays)
 fixed size
 waste space
 rearrangement of entries
 sharing between structures?
 dynamic data structures
 change size over time
 storage proportional to amount of information
 linked structures
 nodes (objects) connected together by references
 dynamic allocation/deallocation
 in array proximity implicit, in linked structure it is explicit
 linear linked structures
 aka linked lists
Data Structures and Abstraction
5.2
COSC 1P03
Sequentially-linked Structures





each node indicates its successor (via a reference)
first node located via reference
last node has no successor (null)
each node represents one entity
empty collection has null reference
Data Structures and Abstraction
5.3
COSC 1P03
Representation
 nodes are objects
 dynamic creation
 let entity objects be nodes?
 add reference field
 disadvantages
 object must “know” it is on list
 multiple lists
 must modify class
Data Structures and Abstraction
5.4
COSC 1P03
Node Wrapper Class
 separate class references objects
 wrapper class, mixin
 fields
 reference (p.theStudent)
 link (p.next)
 constructor
 visibility
 class
 fields
 as sequentially-linked structure
 general case
 initial (empty) state
 multiple lists
 different sequence of Nodes, same objects
Data Structures and Abstraction
5.5
COSC 1P03
Operations
 insertion
 where?
 deletion
 which node?
 traversal
 “visit” all nodes
 like array traversal
 search
 special traversal
 simple vs exhaustive
Data Structures and Abstraction
5.6
COSC 1P03
Insertion
 insert where?
 front
 end
 in some order (e.g. sorted)
 at front
 new entry points to previous front
 list reference points to new entry
 pattern
 O(1)
 repeated application
 reverse order
Data Structures and Abstraction
5.7
COSC 1P03
Deletion
 delete which node?
 first
 last
 matching a key
 only if not empty
 delete first
 move list pointer to second node
 garbage collection
 node
 entity
 pattern
 O(1)
Data Structures and Abstraction
5.8
COSC 1P03
Traversal
 sequential processing
 to get to nth node must first get to (n-1)st node
 travelling pointer
 start at first node
 move to node's successor
 p = p.next
 termination
 no more nodes (p == null)
 pattern
 O(n)
 vs array traversal
 sequential traversal pattern
Data Structures and Abstraction
5.9
COSC 1P03
Search
 search key
 two outcomes
 success
 failure
 variant of traversal
 two exits
 end of list
 found item
 pattern
 O(n)
Data Structures and Abstraction
5.10
COSC 1P03
Insertion at End of List
 for insertion in order
 find end of list
 traversal
 2 travelling pointers
 initial state
 q is predecessor of p
 insert
 pattern
 traverse
 updating p & q
 insert
 2 cases
 q == null (empty list)
 q != null (at end)
 O(n)
Data Structures and Abstraction
5.11
COSC 1P03
Deletion of Last Node
 must modify second last node
 find second last node
 traversal
 2 travelling pointers
 test
 pattern
 pre test
 error
 traverse
 delete
 2 cases
 q == null (only node)
 q != null (last node)
 O(n)
Data Structures and Abstraction
5.12
COSC 1P03
The End
Data Structures and Abstraction
5.33