Пример #1
0
        public static PointBiList AddPoint(PointBiList beg, int number)
        {
            Animals a = new Animals();

            a = a.CreateObjectAnimalsRandom();
            Console.WriteLine("\nЭлемент {0} добавляется ...", a.ToString());
            // создаем новый элемент
            PointBiList NewPoint = MakePoint((Animals)a.Clone());

            if (beg == null) // список пустой
            {
                beg = MakePoint((Animals)a.Clone());
                return(beg);
            }
            if (number == 1) //добавление в начало списка
            {
                beg.pred      = NewPoint;
                NewPoint.next = beg;
                beg           = NewPoint;
                return(beg);
            }
            // вспом. переменная для прохода по списку
            PointBiList p = beg;

            // идем по списку до нужного элемента
            for (int i = 1; i < number - 1 && p != null; i++)
            {
                p = p.next;
            }
            // добавляем новый элемент
            NewPoint.pred = p;
            NewPoint.next = p.next;
            p.next        = NewPoint;
            return(beg);
        }
Пример #2
0
        public static PointBiList AddOddObjects(PointBiList beg)
        {
            int size = GetCount(beg) * 2;

            for (int i = 0; i <= size; i += 2)
            {
                beg = AddPoint(beg, i + 1);
            }
            return(beg);
        }
Пример #3
0
        public static int GetCount(PointBiList beg)
        {
            int         i = 0;
            PointBiList 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(PointBiList beg)
        {
            // проверка наличия элементов в списке
            if (beg == null)
            {
                Console.WriteLine("\nСписок пустой");
                return;
            }
            PointBiList p = beg;

            Console.WriteLine("\nСписок:");
            while (p != null)
            {
                Console.WriteLine(p.ToString());
                p = p.next; // переход к следующему элементу
            }
        }
Пример #6
0
        // формирование двунаправленного списка
        public static PointBiList MakeList(int size) //добавление в начало
        {
            Animals a = new Animals();

            a = a.CreateObjectAnimalsRandom();
            Console.WriteLine("Элемент {0} добавляется ...", a.ToString());
            PointBiList beg = MakePoint((Animals)a.Clone());

            for (int i = 1; i < size; i++)
            {
                a = a.CreateObjectAnimalsRandom();
                Console.WriteLine("Элемент {0} добавляется ...", a.ToString());
                PointBiList p = MakePoint((Animals)a.Clone());
                p.next   = beg;
                beg.pred = p;
                beg      = p;
            }
            return(beg);
        }
Пример #7
0
        public static PointBiList DelElement(PointBiList beg, int number)
        {
            if (number == 1) // удаляем первый элемент
            {
                beg = beg.next;
                if (beg != null)
                {
                    beg.pred = null;
                }
                return(beg);
            }
            PointBiList p = beg;

            // ищем элемент для удаления и встаем на предыдущий
            for (int i = 1; i < number - 1 && p != null; i++)
            {
                p = p.next;
            }
            // исключаем элемент из списка
            p.next      = p.next.next;
            p.next.pred = p;
            return(beg);
        }
Пример #8
0
        private static void BiCaseMenu(ref PointBiList beg)
        {
            while (true)
            {
                int pointsCaseMenu = 7;

                Console.WriteLine("\nМеню работы с двунаправленным списком");
                Console.WriteLine("1 - Формирование двунаправленного списка");
                Console.WriteLine("2 - Добавление элемента в список");
                Console.WriteLine("3 - Удаление элемента из списка");
                Console.WriteLine("4 - Печать списка");
                Console.WriteLine("5 - Добавление в список элементов с номерами 1, 3, 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, PointBiList.maxCount);
                    Console.WriteLine("Список:");
                    beg = PointBiList.MakeList(number);
                    Console.WriteLine("Формирование двунаправленного списка завершено");
                }
                break;

                case 2:
                {
                    Console.WriteLine("\n2 - Добавление элемента в список");
                    if (PointBiList.GetCount(beg) >= PointBiList.maxCount)
                    {
                        Console.WriteLine("Ошибка! Список имеет не меньше 100 элементов");
                        Console.WriteLine("Добавление элемента в список не завершено");
                        break;
                    }
                    Console.WriteLine("Введите номер добавления объекта в список:");
                    int number = InputInt(1, PointBiList.GetCount(beg) + 1);
                    beg = PointBiList.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, PointBiList.GetCount(beg));
                    beg = PointBiList.DelElement(beg, number);
                    Console.WriteLine("Удаление элемента из списка завершено");
                }
                break;

                case 4:
                {
                    Console.WriteLine("\n4 - Печать списка");
                    PointBiList.ShowList(beg);
                    Console.WriteLine("Печать списка завершена");
                }
                break;

                case 5:
                {
                    Console.WriteLine("\n5 - Добавление в список элементов с номерами 1, 3, 5 и т.д.");
                    if (PointBiList.GetCount(beg) >= PointBiList.maxCount)
                    {
                        Console.WriteLine("Ошибка! Список имеет не меньше 100 элементов");
                        Console.WriteLine("Добавление в список элементов с номерами 1, 3, 5 и т.д. не завершено");
                        break;
                    }
                    beg = PointBiList.AddOddObjects(beg);
                    Console.WriteLine("Добавление в список элементов с номерами 1, 3, 5 и т.д. завершено");
                }
                break;

                case 6:
                {
                    Console.WriteLine("\n6 - Удаление списка из памяти");
                    beg = null;
                    Console.WriteLine("Удаление списка из памяти завершено");
                }
                break;

                case 7:
                {
                    Console.Clear();
                    Console.WriteLine("История была очищена");
                }
                break;
                }
            }
        }
Пример #9
0
        // создание элемента списка
        static PointBiList MakePoint(Animals a)
        {
            PointBiList p = new PointBiList(a);

            return(p);
        }
Пример #10
0
 public PointBiList(Animals a)
 {
     animal = a;
     next   = null;
     pred   = null;
 }
Пример #11
0
        public PointBiList pred; // адрес предыдущего элемента

        public PointBiList()
        {
            animal = new Animals();
            next   = null;
            pred   = null;
        }