130 likes | 155 Views
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). Dynamic Structures. collections limitations of static structures (i.e. arrays) fixed size waste space rearrangement of entries
E N D
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)
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
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
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
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
Operations • insertion • where? • deletion • which node? • traversal • “visit” all nodes • like array traversal • search • special traversal • simple vs exhaustive
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
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)
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
Search • search key • two outcomes • success • failure • variant of traversal • two exits • end of list • found item • pattern • O(n)
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)
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)