Data Structures & Algorithms Lecture Notes

16 February 2010 • Odds and Ends


Outline

A Dynamic-Array Pathology

Adding Delay

Delay Example

Controlling Delay

Dynamic Linked Sequences

void addAfter(T v)
  Link l = findBefore(v)
  Link n = new Link()
  n.value = v
  n.next = l.next
  l.next = n

adding a new link

void remove(T v)
  Link l = findBefore(v)
  l.next = l.next.next

removing a value

Boxed code creates nodes and garbage (unreferenced instances).

Dynamic Storage Costs

Free Lists

Link management

private Link newLink()
  if freeList != null
    Link l = freeList
    freeList = l.next
    return l
  return new Link()

adding a new link

public void remove(T v)
  Link n = findAfter(v)
  Link l = n.next
  n.next = l.next
  l.next = freeList
  freeList = l

removing a value

Oh Really?

Free-List Problems

Linked-List Comparison

Dynamic-Array Lists

Faster Array Linked Lists

Link Definition

Example

Linked-List Comparison

Summary


This page last modified on 16 February 2010.

Creative
    Commons License