Node

open class Node<T>

A type to hold onto elements in a LinkedList.

Discussion

These nodes hold onto a value, the next node, and the previous node.

  • The concrete value the node is holding on to.

    Declaration

    Swift

    public var value: Value
  • An optional reference to the next node in the LinkedList.

    Declaration

    Swift

    public var next: Node<Value>?
  • An optional reference to the previous node in the LinkedList.

    Declaration

    Swift

    public var previous: Node<Value>?
  • A method to move N spaces forwards or backwards through the nodes.

    Important

    If the distance is out of bounds nil will be returned

    Declaration

    Swift

    open func traverse(_ distance: Int) -> Node<T>?

    Parameters

    distance

    an integer indicating how far to move through the nodes.

    Return Value

    the node at the indicated distance; nil if distance is out of bounds.

  • A method to move forward through the nodes until a precondition is met.

    Declaration

    Swift

    open func traverse(direction: TraversalDirection = .forward, until: ((Node<T>) -> Bool)) -> Node<T>?

    Parameters

    direction

    an enum indicating whether to traverse forward or backwards, defaults to TraversalDirection.forward.

    until

    a closure that takes in a node and returns a boolean to indicate whether traversal should continue. Once until returns true, it is not called again.

    Return Value

    the node when traversal finishes; nil if none found.

  • A method to move forward through the nodes until there is no next.

    Declaration

    Swift

    open func traverseToEnd() -> Node<T>
  • A method to move backwards through the nodes until there is no previous.

    Declaration

    Swift

    open func traverseToBeginning() -> Node<T>
  • A nodes position in the LinkedList

    Complexity

    O(n) this has a worst case of having to traverse the entire list to determine its position.

    Declaration

    Swift

    open var position: Int { get }
  • Creates an exact replica of the node, including the next and previous values, this essentially deep copies the entire LinkedList.

    Declaration

    Swift

    open func copy() -> Node<T>