コード例 #1
0
        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();
        }
コード例 #2
0
        public static ForwardList operator >(ForwardList left, ForwardList right)
        {
            ForwardList result = (ForwardList)right.Clone();

            result.GetLast().Next = ((ForwardList)left.Clone()).First;
            return(result);
        }
コード例 #3
0
        public static long Count(this ForwardList obj)
        {
            int      result = 0;
            Iterator cur    = obj.First;

            while (cur != null)
            {
                result++;
                cur = cur.Next;
            }
            return(result);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
        }