//Функция объединения private static void AddElement() { var exit = false; PointTwo beg = null; var sizeTwo = 0; var k = 2; while (!exit) { var sw = Print.Menu(k, Index[5], Index[9], Index[7], Index[4]); switch (sw) { case 1: beg = CreatePointTwo(out k, out sizeTwo); Console.WriteLine(Index[8]); Console.ReadLine(); break; case 2: Console.WriteLine("Список до изменений: "); ShowList(beg); var tmp = sizeTwo; CreateExtraElement(beg, ref sizeTwo); if (sizeTwo != tmp) { Console.WriteLine("Cписок после изменений: "); ShowList(beg); } Console.WriteLine(Index[8]); Console.ReadLine(); break; case 3: ShowList(beg); Console.WriteLine(Index[8]); Console.ReadLine(); break; case 4: exit = true; //выход break; } } //Конец While } //Функция объединения
//Добавление элемента с заданным номером c ДСЧ private static PointTwo AddPointRandom(PointTwo beg, PointTwo point, ref int sizeTwo) { var rnd = new Random(); if (beg == null) //список пустой { Console.WriteLine("Error! The List is empty..."); return(beg); } var p = beg; for (var i = 0; i < sizeTwo && p != null; i++) { if (p.Data != point.Data) { p = p.Next; } else { break; } } if (p == null) { Console.WriteLine("Error! The given number isn't in the the List..."); return(beg); } var info = Math.Round(rnd.Next(-100, 101) + rnd.NextDouble(), 3); Console.WriteLine("The element {0} is adding...", info); var newPoint = MakePointTwo(info); newPoint.Next = p.Next; newPoint.Pred = p; p.Next = newPoint; sizeTwo++; if (newPoint.Next != null) //не последний { newPoint.Next.Pred = newPoint; } return(beg); }
//Вывести список private static void ShowList(PointTwo beg) { if (beg == null) { Console.WriteLine("The List is empty"); return; } var p = beg; while (p != null) { Console.Write(p); p = p.Next; } Console.WriteLine(); }
//Добавление элемента с заданным номером с класиатуры private static PointTwo AddPointKeyboard(PointTwo beg, PointTwo point, ref int sizeTwo) { if (beg == null) //список пустой { Console.WriteLine("Error! The List is empty..."); return(beg); } var p = beg; for (var i = 0; i < sizeTwo && p != null; i++) { if (p.Data != point.Data) { p = p.Next; } else { break; } } if (p == null) { Console.WriteLine("Error! The given number isn't in the the List..."); return(beg); } Console.WriteLine("Read element: "); var info = ReadLib.ReadLib.ReadDouble(); Console.WriteLine("The element {0} is adding...", info); var newPoint = MakePointTwo(info); newPoint.Next = p.Next; newPoint.Pred = p; p.Next = newPoint; if (newPoint.Next != null) //не последний { newPoint.Next.Pred = newPoint; } sizeTwo++; return(beg); }
//Выбор ввода доп. элемента private static void CreateExtraElement(PointTwo beg, ref int sizeTwo) { Console.WriteLine("Введите элемент, после которого ввести элемент: "); var addElement = MakePointTwo(ReadLib.ReadLib.ReadDouble()); var sw = Print.Menu(0, Index[12], Index[13], Index[4]); switch (sw) { case 1: beg = AddPointRandom(beg, addElement, ref sizeTwo); break; case 2: beg = AddPointKeyboard(beg, addElement, ref sizeTwo); break; case 3: break; } }
} //Функция объединения //создание элемента списка private static PointTwo MakePointTwo(double d) { var p = new PointTwo(d); return(p); }
public PointTwo(double d) { Data = d; Next = null; Pred = null; }
Pred; //адрес предыдущего элемента public PointTwo() { Data = 0; Next = null; Pred = null; }