public void Enqueue(T value) { var newEntry = new LinkedListNode <T>(value); if (Entires.Count == 0) { Entires.AddFirst(newEntry); } else { var curEntry = Entires.First; while (curEntry.Next != null && curEntry.Value.CompareTo(value) <= 0) { curEntry = curEntry.Next; } if (curEntry.Value.CompareTo(value) <= 0) { Entires.AddAfter(curEntry, newEntry); } else { Entires.AddBefore(curEntry, newEntry); } } }
public T Dequeue() { if (Entires.Count > 0) { T value = Entires.First.Value; Entires.RemoveFirst(); return(value); } return(default(T)); }
public T FindDequeue(Func <T, bool> isMatch) { var curEntry = Entires.First; while (curEntry != null) { if (isMatch(curEntry.Value)) { Entires.Remove(curEntry); return(curEntry.Value); } curEntry = curEntry.Next; } return(default(T)); }