示例#1
0
 /// <summary>
 /// constructor with a specific direction and comparision function
 /// </summary>
 /// <param name="Direction">direction</param>
 /// <param name="priorityComparison">comparision</param>
 public FibonacciHeap(HeapDirection Direction, Func <TPriority, TPriority, int> priorityComparison)
 {
     nodes                   = new FibonacciHeapHeapLinkedList <TPriority, TValue>();
     degreeToNode            = new Dictionary <int, FibonacciHeapHeapCell <TPriority, TValue> >();
     DirectionMultiplier     = (short)(Direction == HeapDirection.Increasing ? 1 : -1);
     this.direction          = Direction;
     this.priorityComparsion = priorityComparison;
     count                   = 0;
 }
示例#2
0
        /// <summary>
        /// merging two lists
        /// </summary>
        /// <param name="list">second list</param>
        internal void MergeLists(FibonacciHeapHeapLinkedList <TPriority, TValue> list)
        {
            Contract.Requires(list != null);

            if (list.First != null)
            {
                if (last != null)
                {
                    last.Next = list.first;
                }
                list.first.Previous = last;
                last = list.last;
                if (first == null)
                {
                    first = list.first;
                }
            }
        }