public static LinkedList <T> Go(LinkedList <T> input) { var set = new HashSet <T>(); var current = input.Tail; var retVal = new LinkedList <T>(); while (current != null) { if (!set.Contains(current.Val)) { set.Add(current.Val); retVal.Push(current.Val); } current = current.Next; } return(retVal); }