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); } } }
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(); }
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; } } }