public static int SumRec(PointBiList beg, int sum = 0) { PointBiList p = beg; if (p != null) { sum += p.data; // Переход к следующему элементу return(SumRec(p.next, sum)); } return(sum); }
static void Main(string[] args) { Console.WriteLine("Введите длину двунаправленного списка:"); int size = InputInteger(1, 100); var beg = PointBiList.MakeList(size); PointBiList.Print(beg); Console.WriteLine("Сумма информационных полей:"); Console.WriteLine(PointBiList.Sum(beg)); Console.WriteLine("Сумма информационных полей через рекурсию:"); Console.WriteLine(PointBiList.SumRec(beg)); }
// Создание двунаправленного списка public static PointBiList MakeList(int size) { PointBiList beg = MakePoint(rand.Next(-20, 20)); for (int i = 1; i < size; i++) { PointBiList p = MakePoint(rand.Next(-20, 20)); p.next = beg; beg.pred = p; beg = p; } return(beg); }
public static int Sum(PointBiList beg) { int sum = 0; PointBiList p = beg; while (p != null) { sum += p.data; // Переход к следующему элементу p = p.next; } return(sum); }
public static void Print(PointBiList beg) { // Проверка наличия элементов в списке if (beg == null) { Console.WriteLine("Список пустой"); return; } PointBiList p = beg; Console.WriteLine("Список:"); while (p != null) { Console.WriteLine(p.ToString()); // Переход к следующему элементу p = p.next; } }
// Создание элемента списка static PointBiList MakePoint(int num) { PointBiList p = new PointBiList(num); return(p); }
public PointBiList(int num) { data = num; next = null; pred = null; }
public PointBiList() { data = rand.Next(-20, 20); next = null; pred = null; }