/// <summary> /// Tries to get the max row id from the tree /// </summary> /// <returns>The max row id</returns> public int GetMaxRowId() { if (_tree.Count == 0) { return(0); } else { int maxPageId = _tree.FindMax().Key; Page maxPage; _tree.Find(ref maxPageId, out maxPage); return(maxPage.GetMaxRowId()); } }
T RemoveMain(int priority, T item) { int p = priority; HashedLinkedList <T> list; if (!main.Find(ref p, out list)) { return(default(T)); } T removedItem; list.Remove(item, out removedItem); if (list.Count == 0) { main.Remove(priority); } return(removedItem); }
// Given a sequence of strings, return all non-trivial anagram classes private static SCG.IEnumerable <SCG.IEnumerable <string> > AnagramClasses(SCG.IEnumerable <string> ss) { var classes = new TreeDictionary <CharBag, HashSet <string> >(); foreach (string s in ss) { var anagram = AnagramClass(s); if (!classes.Find(ref anagram, out HashSet <string> anagramClass)) { classes[anagram] = anagramClass = new HashSet <string>(); } anagramClass.Add(s); } foreach (HashSet <string> anagramClass in classes.Values) { if (anagramClass.Count > 1) // && anagramClass.Exists(delegate(string s) { return !s.EndsWith("s"); })) { yield return(anagramClass); } } }