// 5.2 - Обработка списка static BiList WorkList2(BiList List2) { bool found = false; if (List2 == null) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Список пуст"); Console.ResetColor(); return(List2); } BiList p = List2; while ((p != null)) { if (p.data % 2 == 0) { found = true; Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Первый четный элемент удален из списка\n"); Console.ResetColor(); if (p.last != null) { if (p.next != null) { p.last.next = p.next; p.next.last = p.last; break; } else { p.last.next = null; break; } } else { if (p.next != null) { List2 = p.next; break; } else { List2 = null; break; } } } p = p.next; } if (found == false) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("В списке нет ни одного четного элемента\n"); Console.ResetColor(); } return(List2); }
// 5.3 - Вывод списка на экран static void ShowList2(BiList List2) { if (List2 == null) { Console.WriteLine("Список пуст"); Console.ResetColor(); return; } BiList p = List2; while (p != null) { Console.WriteLine(p.data); p = p.next; } Console.WriteLine(); }
last; //адрес предыдущего элемента public BiList(int d) // Конструктор с параметрами { data = d; next = null; last = null; }
// 5.1 - Формирование нового списка static BiList FormNewList2(string[] args) { Console.WriteLine("----------Формирование двунапраленного списка----------------"); Console.Write("\nВведите число элементов в списке:"); int size = IntRND(1, 999999, "Ошибка, при вводе, повторите!"); int info = 0, LowLimit = 0, HighLimit = 0; BiList beg = null; BiList r = null; BiList p = null; do { Text_Dialog.FormList(); int how = Search_for_Bugs.ProverkaVvoda(); switch (how) { case 1: Console.Write("Введите нижнюю границу:"); LowLimit = Int(); do { Console.Write("Введите верхнюю границу:"); HighLimit = Int(); if (HighLimit < LowLimit) { Console.WriteLine("Верхняя граница не может быть меньше нижней!!!"); } } while (HighLimit < LowLimit); info = rnd.Next(LowLimit, HighLimit); beg = MakePoint2(info); r = beg; for (int i = 1; i < size; i++) { info = rnd.Next(LowLimit, HighLimit); p = MakePoint2(info); r.next = p; p.last = r; r = p; } Console.WriteLine("Список сформирован"); break; case 2: Console.WriteLine("Введите элемент строкового типа под номером 1"); info = Int(); beg = MakePoint2(info); r = beg; for (int i = 1; i < size; i++) { Console.WriteLine("Введите элемент строкового типа под номером {0}", i + 1); info = Int(); p = MakePoint2(info); r.next = p; p.last = r; r = p; } Console.WriteLine("Список сформирован"); break; case 9: Console.Clear(); Main(args); break; case 0: Console.Clear(); Thread.Sleep(900); Console.WriteLine(" "); Console.WriteLine("Завершение работы..."); Environment.Exit(0); break; default: Text_Dialog.MainError(); continue; } } while (!true); return(beg); }
//----------------------------------------------------------------------------------------------------------- //---Двунаправленный список---------------------------------------------------------------------------------- #region static void PointTwo(string[] args) { int SwitchNumber; BiList List2 = null; do { Console.WriteLine("\n--------------------------------------------------------"); Console.WriteLine("| Выберите следующее действие: |"); Console.WriteLine("| 1) Сформировать список |"); Console.WriteLine("| 2) Удалить из текущего списка первый четный элемент |"); Console.WriteLine("| 3) Вывести текущий список на экран |"); Console.WriteLine("| 9) В начало |"); Console.WriteLine("| 0) Выход из консоли |"); Console.WriteLine("--------------------------------------------------------"); Console.Write("Действие: "); SwitchNumber = Search_for_Bugs.ProverkaVvoda(); switch (SwitchNumber) { case 1: Console.Clear(); List2 = FormNewList2(args); Console.Clear(); Console.WriteLine("----------Двунапраленный список----------------\n"); ShowList2(List2); Console.WriteLine("-----------------------------------------------"); break; case 2: Console.Clear(); Console.WriteLine("----------Двунапраленный список----------------\n"); List2 = WorkList2(List2); ShowList2(List2); Console.WriteLine("-----------------------------------------------"); do { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("\nУдаление уже произведено!!!"); Console.ResetColor(); Console.WriteLine("\n--------------------------------------------------------"); Console.WriteLine("| Выберите следующее действие: |"); Console.WriteLine("| 1) Сформировать новый список |"); Console.WriteLine("| 2) Вывести текущий список на экран |"); Console.WriteLine("| 9) В начало |"); Console.WriteLine("| 0) Выход из консоли |"); Console.WriteLine("--------------------------------------------------------"); Console.Write("Действие: "); SwitchNumber = Search_for_Bugs.ProverkaVvoda(); switch (SwitchNumber) { case 1: Console.Clear(); List2 = FormNewList2(args); Console.Clear(); Console.WriteLine("----------Двунапраленный список----------------\n"); ShowList2(List2); Console.WriteLine("-----------------------------------------------"); break; case 2: Console.Clear(); Console.WriteLine("----------Двунапраленный список----------------\n"); ShowList2(List2); Console.WriteLine("-----------------------------------------------"); break; case 9: Console.Clear(); Main(args); break; case 0: Console.Clear(); Console.WriteLine(" "); Console.WriteLine("Завершение работы..."); Thread.Sleep(900); Environment.Exit(0); break; default: Text_Dialog.MainError(); continue; } } while (!true); break; case 3: Console.Clear(); Console.WriteLine("----------Двунапраленный список----------------\n"); ShowList2(List2); Console.WriteLine("-----------------------------------------------"); break; case 9: Console.Clear(); Main(args); break; case 0: Console.Clear(); Console.WriteLine(" "); Console.WriteLine("Завершение работы..."); Thread.Sleep(900); Environment.Exit(0); break; default: Text_Dialog.MainError(); continue; } } while (true); }
static BiList MakePoint2(int d) { BiList p = new BiList(d); return(p); }