/// <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); }
/// <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); }
/// <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); }
/// <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); } }
/// <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); }
public SortedPriorityQueue() { data = new PositionalList <IPriorityQueue <K, V> .Item>(); }