static void Main(string[] args) { ForwardList.Owner owner = new ForwardList.Owner(DateTime.Now.Millisecond) { author = "QuatreB", company = "Software Crew" }; Console.WriteLine($"\t\tWho am I?\n\t\t{owner}\n"); ForwardList a = new ForwardList(rand.Next(2, 5)); ForwardList b = new ForwardList(rand.Next(2, 5)); Console.WriteLine($" [A]\tOwner: {a.owner}\tCreation date: {a.creationDate}\n" + a); Console.WriteLine($" [B]\tOwner: {b.owner}\tCreation date: {b.creationDate}\n" + b); Console.WriteLine(); Console.WriteLine(" [!A] Инверсия:\n" + !a); Console.WriteLine(" [!B] Инверсия:\n" + !b); Console.WriteLine(" [A + B] Объединение:\n" + (a + b)); Console.WriteLine(" [A < B] Присоединение:\n" + (a < b)); Console.WriteLine(" [A > B] Присоединение:\n" + (a > b)); Console.WriteLine(" [A == B] Сравнение:\n\t" + (a == b)); Console.WriteLine(" [A != B] Сравнение:\n\t" + (a != b)); Console.ReadKey(); }
public static ForwardList operator >(ForwardList left, ForwardList right) { ForwardList result = (ForwardList)right.Clone(); result.GetLast().Next = ((ForwardList)left.Clone()).First; return(result); }
public static long Count(this ForwardList obj) { int result = 0; Iterator cur = obj.First; while (cur != null) { result++; cur = cur.Next; } return(result); }
public static long Sum(this ForwardList obj) { long result = 0; Iterator cur = obj.First; while (cur != null) { result += cur.Value; cur = cur.Next; } return(result); }
public static long MaxMinDiff(this ForwardList obj) { long max = long.MinValue, min = long.MaxValue; Iterator cur = obj.First; while (cur != null) { max = Math.Max(max, cur.Value); min = Math.Min(min, cur.Value); cur = cur.Next; } return(max - min); }
public static ForwardList operator !(ForwardList obj) { ForwardList result = (ForwardList)obj.Clone(); Iterator cur = result.First; while (cur != null) { cur.Value = -cur.Value; cur = cur.Next; } return(result); }
public object Clone() { ForwardList cloned = new ForwardList(); Iterator clonedCur = cloned.First, cur = First; while (cur != null) { clonedCur.Value = cur.Value; if (cur.Next != null) { clonedCur.Next = new Iterator(cur.Next.Value); } clonedCur = clonedCur.Next; cur = cur.Next; } return(cloned); }
public static ForwardList operator +(ForwardList left, ForwardList right) { ForwardList result = (ForwardList)left.Clone(); Iterator cur = result.First, rightCur = right.First; while (cur != null && rightCur != null) { cur.Next = new Iterator(rightCur.Value, cur.Next); rightCur = rightCur.Next; cur = cur.Next.Next; } cur = result.GetLast(); while (rightCur != null) { cur.Next = new Iterator(rightCur.Value); rightCur = rightCur.Next; cur = cur.Next; } return(result); }