public static PointUniList DelEvenObjects(PointUniList beg) { if (beg == null) // пустой список { Console.WriteLine("\nОшибка! Список пустой"); return(null); } while (beg.animal.Weight % 2 == 0 & beg != null) { beg = beg.next; } PointUniList p = beg; // ищем элемент для удаления и встаем на предыдущий while (p != null) { if (p.next == null) { break; } else if (p.next.animal.Weight % 2 == 0) { p.next = p.next.next; } else { p = p.next; // переход к следующему элементу } } return(beg); }
public static PointUniList AddPoint(PointUniList beg, int number) { Animals a = new Animals(); a = a.CreateObjectAnimalsRandom(); Console.WriteLine("\nЭлемент {0} добавляется ...", a.ToString()); PointUniList NewPoint = MakePoint((Animals)a.Clone()); if (beg == null) { beg = MakePoint((Animals)a.Clone()); return(beg); } if (number == 1) { NewPoint.next = beg; beg = NewPoint; return(beg); } PointUniList p = beg; for (int i = 1; i < number - 1 && p != null; i++) { p = p.next; } NewPoint.next = p.next; p.next = NewPoint; return(beg); }
public static int GetCount(PointUniList beg) { int i = 0; PointUniList p = beg; while (p != null) { i++; p = p.next; // переход к следующему элементу } return(i); }
static void Main(string[] args) { PointUniList uniListBeg = null; PointBiList biListBeg = null; PointTree pointTree = null; Tree <Animals> tree = null; Console.WriteLine("Добро пожаловать в приложение по работе с коллекциями!"); while (true) { int pointsMainMenu = 4; Console.WriteLine("\nМеню приложения:"); Console.WriteLine("1 - Меню работы с однонаправленным списком"); Console.WriteLine("2 - Меню работы с двунаправленным списком"); Console.WriteLine("3 - Меню работы с идеально сбалансированным деревом"); Console.WriteLine("4 - Меню работы с обобщенной коллекцией"); Console.WriteLine("0 - Выйти из приложения"); int choiceMainMenu = InputInt(0, pointsMainMenu); if (choiceMainMenu == 0) { Console.WriteLine("\n0 - Выход из приложения"); break; } switch (choiceMainMenu) { case 1: UniCaseMenu(ref uniListBeg); break; case 2: BiCaseMenu(ref biListBeg); break; case 3: TreeCaseMenu(ref pointTree); break; case 4: PointTreeCaseMenu(ref tree); break; } } }
public static void ShowList(PointUniList beg) { if (beg == null) { Console.WriteLine("\nСписок пустой"); return; } PointUniList p = beg; Console.WriteLine("\nСписок:"); while (p != null) { Console.WriteLine(p.ToString()); p = p.next; } }
public static PointUniList DelElement(PointUniList beg, int number) { if (number == 1) { beg = beg.next; return(beg); } PointUniList p = beg; for (int i = 1; i < number - 1 && p != null; i++) { p = p.next; } p.next = p.next.next; return(beg); }
public static PointUniList MakeList(int size) { Animals a = new Animals(); a = a.CreateObjectAnimalsRandom(); Console.WriteLine("Элемент {0} добавляется ...", a.ToString()); PointUniList beg = MakePoint((Animals)a.Clone()); for (int i = 1; i < size; i++) { a = a.CreateObjectAnimalsRandom(); Console.WriteLine("Элемент {0} добавляется ...", a.ToString()); PointUniList p = MakePoint((Animals)a.Clone()); p.next = beg; beg = p; } return(beg); }
static PointUniList MakePoint(Animals a) { PointUniList p = new PointUniList(a); return(p); }
public PointUniList(Animals a) { animal = a; next = null; }
public PointUniList() { animal = new Animals(); next = null; }
private static void UniCaseMenu(ref PointUniList beg) { while (true) { int pointsCaseMenu = 7; Console.WriteLine("\nМеню работы с однонаправленным списком:"); Console.WriteLine("1 - Формирование однонаправленного списка"); Console.WriteLine("2 - Добавление элемента в список"); Console.WriteLine("3 - Удаление элемента из списка"); Console.WriteLine("4 - Печать списка"); Console.WriteLine("5 - Удаление из списка всех элементов с четными информационными полями"); Console.WriteLine("6 - Удаление списка из памяти"); Console.WriteLine("7 - Очистка истории"); Console.WriteLine("0 - Выход из меню"); int choiceCaseMenu = InputInt(0, pointsCaseMenu); if (choiceCaseMenu == 0) { Console.WriteLine("\n0 - Выход из меню"); break; } switch (choiceCaseMenu) { case 1: { Console.WriteLine("\n1 - Формирование однонаправленного списка"); Console.WriteLine("Введите количество объектов для формирования списка:"); int number = InputInt(1, PointUniList.maxCount); Console.WriteLine("Список:"); beg = PointUniList.MakeList(number); Console.WriteLine("Формирование однонаправленного списка завершено"); } break; case 2: { Console.WriteLine("\n2 - Добавление элемента в список"); if (PointUniList.GetCount(beg) >= PointUniList.maxCount) { Console.WriteLine("Ошибка! Список имеет не меньше 100 элементов"); Console.WriteLine("Добавление элемента в список не завершено"); break; } Console.WriteLine("Введите номер добавления элемента в список:"); int number = InputInt(1, PointUniList.GetCount(beg) + 1); beg = PointUniList.AddPoint(beg, number); Console.WriteLine("Добавление элемента в список завершено"); } break; case 3: { Console.WriteLine("\n3 - Удаление элемента из списка"); if (beg == null) // пустой список { Console.WriteLine("Ошибка! Список пустой"); Console.WriteLine("Удаление элемента в список не завершено"); break; } Console.WriteLine("Введите номер удаления элемента в список:"); int number = InputInt(1, PointUniList.GetCount(beg)); beg = PointUniList.DelElement(beg, number); Console.WriteLine("Удаление элемента из списка завершено"); } break; case 4: { Console.WriteLine("\n4 - Печать списка"); PointUniList.ShowList(beg); Console.WriteLine("Печать списка завершена"); } break; case 5: { Console.WriteLine("\n5 - Удаление из списка всех элементов с четными информационными полями"); if (beg == null) { Console.WriteLine("Ошибка! Список пустой"); Console.WriteLine("Удаление из списка всех элементов с четными информационными полями не завершено"); break; } beg = PointUniList.DelEvenObjects(beg); Console.WriteLine("Удаление из списка всех элементов с четными информационными полями завершено"); } break; case 6: { Console.WriteLine("\n6 - Удаление списка из памяти"); beg = null; Console.WriteLine("Удаление списка из памяти завершено"); } break; case 7: { Console.Clear(); Console.WriteLine("История была очищена"); } break; } } }