/// <summary> /// Initializes a new instance. /// </summary> /// <param name="direction"></param> /// <param name="comparer"></param> public FibonacciHeap(HeapDirection direction, Func <TPriority, TPriority, int> comparer) { nodes = new FibonacciHeapLinkedList <TPriority, TValue>(); degreeToNode = new Dictionary <int, FibonacciHeapCell <TPriority, TValue> >(); directionMultiplier = (short)(direction == HeapDirection.Increasing ? 1 : -1); this.direction = direction; this.comparer = comparer; count = 0; }
public void Merge(FibonacciHeapLinkedList <TPriority, TValue> list) { if (list is null) { throw new ArgumentNullException(nameof(list)); } if (list.First != null) { if (last != null) { last.Next = list.First; } list.First.Previous = last; last = list.Last; if (first == null) { first = list.First; } } }
/// <summary> /// Initializes a new instance. /// </summary> public FibonacciHeapCell() { children = new FibonacciHeapLinkedList <TPriority, TValue>(); }