Beispiel #1
0
 /// <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;
                }
            }
        }
Beispiel #3
0
 /// <summary>
 /// Initializes a new instance.
 /// </summary>
 public FibonacciHeapCell()
 {
     children = new FibonacciHeapLinkedList <TPriority, TValue>();
 }