示例#1
0
 public void ReverseRecursion(ListOne <T> list)
 {
     if (list.Beg == null)
     {
         Console.WriteLine("Коллекция пуста");
         return;
     }
     else
     {
         if (list.Beg.Next == null)
         {
             Console.WriteLine("Коллекция состоит из 1 элемента");
             Beg = new Point <T>(list.Beg.Data);
             return;
         }
         else
         {
             Point <T> p     = list.Beg;
             Point <T> p2    = p.Next;
             Point <T> pNew  = new Point <T>(p.Data);
             Point <T> pNew2 = new Point <T>(p2.Data);
             pNew2.Next = ReverseNext(pNew, p2, pNew2);
         }
     }
 }
示例#2
0
        static void Main(string[] args)
        {
            int[]         mas = new int[] { 1, 2, 3, 4, 5, 6 };
            ListOne <int> l   = new ListOne <int>(mas);
            ListOne <int> l2  = new ListOne <int>();

            Console.WriteLine("Начальная:");
            l.ShowList();
            l2.Reverse(l);
            Console.WriteLine();
            Console.WriteLine("Новая:");
            l2.ShowList();
            l2 = new ListOne <int>();
            Console.WriteLine("Новая:");
            l2.ShowList();

            l2.ReverseRecursion(l);
            Console.WriteLine();
            Console.WriteLine("Новая(рекурсией):");
            l2.ShowList();
        }
示例#3
0
        public void Reverse(ListOne <T> list)
        {
            if (list.Beg == null)
            {
                Console.WriteLine("Коллекция пуста");
                return;
            }
            else
            {
                if (list.Beg.Next == null)
                {
                    Console.WriteLine("Коллекция состоит из 1 элемента");
                    Beg = new Point <T>(list.Beg.Data);
                    return;
                }
                else
                {
                    Point <T> p  = list.Beg;
                    Point <T> p2 = p.Next;
                    Point <T> p3;
                    Point <T> pNew  = new Point <T>(p.Data);
                    Point <T> pNew2 = new Point <T>(p2.Data);

                    while (p2.Next != null)
                    {
                        pNew2.Next = pNew;

                        p3    = p2.Next;
                        pNew  = pNew2;
                        pNew2 = new Point <T>(p3.Data);

                        p2 = p3;
                    }
                    pNew2.Next = pNew;
                    Beg        = pNew2;
                }
            }
        }