예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        public static int GetCount(PointUniList beg)
        {
            int          i = 0;
            PointUniList p = beg;

            while (p != null)
            {
                i++;
                p = p.next; // переход к следующему элементу
            }
            return(i);
        }
예제 #4
0
        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;
                }
            }
        }
예제 #5
0
        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;
            }
        }
예제 #6
0
        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);
        }
예제 #7
0
        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);
        }
예제 #8
0
        static PointUniList MakePoint(Animals a)
        {
            PointUniList p = new PointUniList(a);

            return(p);
        }
예제 #9
0
 public PointUniList(Animals a)
 {
     animal = a;
     next   = null;
 }
예제 #10
0
 public PointUniList()
 {
     animal = new Animals();
     next   = null;
 }
예제 #11
0
        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;
                }
            }
        }