Ejemplo n.º 1
0
        /// <summary>
        /// Returns but does not remove the key-value pair with minimum key
        /// </summary>
        /// <returns></returns>
        public override (K, V) Min()
        {
            PositionalList <Item> .Position p = FindMin();
            Item item = p.element();

            return(item.key, item.value);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Configure a positional argument with a multiple values.
        /// </summary>
        /// <typeparam name="TArg">Argument type.</typeparam>
        /// <param name="getExpr">
        /// Getter expression describing where the values are stored.
        /// </param>
        /// <returns></returns>
        public PositionalList <TConf, TArg> HasPositionalArgumentList <TArg>(
            Expression <Func <TConf, TArg> > getExpr)
        {
            var positional = new PositionalList <TConf, TArg>(this,
                                                              GetDefinitionFromExpression(getExpr));

            FluentConfig.Add(positional);
            return(positional);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Returns but does not remove the key-value pair in front of the Queue
        /// </summary>
        /// <returns></returns>
        public override (K, V) Min()
        {
            if (IsEmpty())
            {
                throw new InvalidOperationException("The Priority Queue is empty");
            }
            PositionalList <Item> .Position p = data.First();
            Item item = p.element();

            return(item.key, item.value);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Adds a new key-value pair
        /// </summary>
        /// <param name="key"></param>
        /// <param name="value"></param>
        public override void Add(K key, V value)
        {
            Item newest = new IPriorityQueue <K, V> .Item(key, value);

            PositionalList <IPriorityQueue <K, V> .Item> .Position walk = data.Last();
            while (walk != null && newest < walk.element())
            {
                walk = data.Before(walk);
            }
            if (walk == null)
            {
                data.AddFirst(newest);
            }
            else
            {
                data.AddAfter(walk, newest);
            }
        }
Ejemplo n.º 5
0
 /// <summary>
 /// Returns the position of the minimum key
 /// </summary>
 /// <returns></returns>
 public PositionalList <Item> .Position FindMin()
 {
     if (IsEmpty())
     {
         throw new InvalidOperationException("The Priority Queue is empty");
     }
     PositionalList <Item> .Position small = data.First();
     PositionalList <Item> .Position walk  = data.After(small);
     while (walk != null)
     {
         if (walk.element() < small.element())
         {
             small = walk;
         }
         walk = data.After(walk);
     }
     return(small);
 }
Ejemplo n.º 6
0
 public SortedPriorityQueue()
 {
     data = new PositionalList <IPriorityQueue <K, V> .Item>();
 }