Ejemplo n.º 1
0
        static void Main()
        {
            string enterValue      = "Введите значение элемента (целое число):";
            string enterNumber     = "Введите номер элемента (начиная с 1):";
            string nothingToDelete = "Список пуст - удалять нечего.";
            string mainWorkingList = "Основной рабочий список: ";
            string listL1          = "Список L1: ";
            string listL2          = "Список L2: ";
            string listL           = "Список L : ";
            string empty           = "[Пуст.]";

            MyList <int> list = new MyList <int>();
            MyList <int> L1   = new MyList <int>();
            MyList <int> L2   = new MyList <int>();
            MyList <int> L    = new MyList <int>();

            int commandNumber;
            int countBefore; //Количество элементов в списке до манипуляций (используется в команде 12. Удаление элементов списка, имеющих равных соседей.)
            int elementNumber;
            int amount;      //Количество элементов в создаваемых малых списках (используется в команде 13. Создать возрастающий список из 2 др.)
            int N;

            do
            {
                Console.Clear();

                Console.WriteLine("1. Добавление элемента в начало списка");
                Console.WriteLine("2. Добавление элемента в конец списка");
                Console.WriteLine("3. Вывод списка на экран в прямом и обратном порядке");
                Console.WriteLine("4. Поиск элемента по его значению (возвращает bool)");
                Console.WriteLine("5. Поиск элемента по номеру (возвращает значение)");
                Console.WriteLine("6. Добавление элемента перед заданным");
                Console.WriteLine("7. Добавление элемента после заданного");
                Console.WriteLine("8. Удаление элемента из начала списка");
                Console.WriteLine("9. Удаление элемента из конца списка");
                Console.WriteLine("10.Удаление элемента перед заданным");
                Console.WriteLine("11.Удаление элемента после заданного");
                Console.WriteLine("12.Удаление элементов списка, имеющих равных соседей.");
                Console.WriteLine("13.Создать возрастающий список из 2 др.\n");

                if (list.Count == 0)
                {
                    Console.WriteLine(mainWorkingList + empty + "\n");
                }

                else
                {
                    Console.WriteLine(mainWorkingList + list.ToString() + "\n");
                }

                if (L.Count != 0)
                {
                    if (L1.Count == 0)
                    {
                        Console.WriteLine(listL1 + empty + "\n");
                    }

                    else
                    {
                        Console.WriteLine(listL1 + L1.ToString() + "\n");
                    }

                    if (L2.Count == 0)
                    {
                        Console.WriteLine(listL2 + empty + "\n");
                    }

                    else
                    {
                        Console.WriteLine(listL2 + L2.ToString() + "\n");
                    }

                    Console.WriteLine(listL + L.ToString() + "\n");
                }

                commandNumber = InputInteger("Введите номер команды (1 - 13):");

                switch (commandNumber)
                {
                case 1:
                    N = InputInteger(enterValue);

                    list.AddToBegin(N);

                    Console.WriteLine("Элемент со значением " + N + " добавлен в начало списка.");

                    break;

                case 2:
                    N = InputInteger(enterValue);

                    list.AddToEnd(N);

                    Console.WriteLine("Элемент со значением " + N + " добавлен в конец списка.");

                    break;

                case 3:
                    list.OutputConsoleForwardReverseOrder();

                    break;

                case 4:
                    if (list.Count == 0)
                    {
                        Console.WriteLine("[Список пуст - искать не из чего.]");
                    }

                    else
                    {
                        N = InputInteger(enterValue);
                        bool isElement = list.IsElement(N);

                        if (isElement)
                        {
                            Console.WriteLine("Элемент со значением " + N + " есть.");
                        }

                        else
                        {
                            Console.WriteLine("Нет элемента со значением " + N + ".");
                        }
                    }

                    break;

                case 5:
                    if (list.Count == 0)
                    {
                        Console.WriteLine("[Список пуст - искать не из чего.]");
                    }

                    else
                    {
                        try
                        {
                            elementNumber = InputInteger(enterNumber);
                            int a = list.GetValue(elementNumber);

                            Console.WriteLine("Значение элемента под номером " + elementNumber + ": " + a);
                        }

                        catch (IndexOutOfRangeException exc)
                        {
                            Console.WriteLine(exc.Message);
                        }
                    }

                    break;

                case 6:
                    if (list.Count == 0)
                    {
                        Console.WriteLine("[Список пуст - нет элементов, перед которыми можно добавить новый элемент.]");
                    }

                    else
                    {
                        elementNumber = InputInteger(enterNumber);
                        N             = InputInteger(enterValue);

                        try
                        {
                            list.AddBefore(elementNumber, N);

                            Console.WriteLine("Элемент со значением " + N + " добавлен перед элементом с номером " + elementNumber + ".");
                        }

                        catch (IndexOutOfRangeException exc)
                        {
                            Console.WriteLine(exc.Message);
                        }
                    }

                    break;

                case 7:
                    if (list.Count == 0)
                    {
                        Console.WriteLine("[Список пуст - нет элементов, после которых можно добавить новый элемент.]");
                    }

                    else
                    {
                        elementNumber = InputInteger(enterNumber);
                        N             = InputInteger(enterValue);

                        try
                        {
                            list.AddAfter(elementNumber, N);

                            Console.WriteLine("Элемент со значением " + N + " добавлен после элемента с номером " + elementNumber + ".");
                        }

                        catch (IndexOutOfRangeException exc)
                        {
                            Console.WriteLine(exc.Message);
                        }
                    }

                    break;

                case 8:
                    if (list.Count == 0)
                    {
                        Console.WriteLine(nothingToDelete);
                    }

                    else
                    {
                        list.DeleteFromBegin();

                        Console.WriteLine("Элемент удалён из начала списка.");
                    }

                    break;

                case 9:
                    if (list.Count == 0)
                    {
                        Console.WriteLine(nothingToDelete);
                    }

                    else
                    {
                        list.DeleteFromEnd();

                        Console.WriteLine("Элемент удалён из конца списка.");
                    }

                    break;

                case 10:
                    if (list.Count == 0)
                    {
                        Console.WriteLine(nothingToDelete);
                    }

                    else
                    {
                        elementNumber = InputInteger(enterNumber);

                        if (elementNumber == 1)
                        {
                            Console.WriteLine("Выбран " + elementNumber + " элемент - перед ним нечего удалять.");
                        }

                        else
                        {
                            try
                            {
                                list.DeleteBefore(elementNumber);

                                Console.WriteLine("Элемент, находящийся перед элементом с номером " + elementNumber + ", удалён.");
                            }

                            catch (IndexOutOfRangeException exc)
                            {
                                Console.WriteLine(exc.Message);
                            }
                        }
                    }

                    break;

                case 11:
                    if (list.Count == 0)
                    {
                        Console.WriteLine(nothingToDelete);
                    }

                    else
                    {
                        elementNumber = InputInteger(enterNumber);

                        if (elementNumber == list.Count)
                        {
                            Console.WriteLine("Выбран " + elementNumber + " элемент - после него нечего удалять.");
                        }

                        else
                        {
                            try
                            {
                                list.DeleteAfter(elementNumber);

                                Console.WriteLine("Элемент, находящийся после элемента с номером " + elementNumber + ", удалён.");
                            }

                            catch (IndexOutOfRangeException exc)
                            {
                                Console.WriteLine(exc.Message);
                            }
                        }
                    }

                    break;

                case 12:
                    if (list.Count == 0)
                    {
                        Console.WriteLine(nothingToDelete);
                    }

                    else
                    {
                        countBefore = list.Count;

                        DeleteBetweenEquel(list);

                        if (countBefore == list.Count)
                        {
                            Console.WriteLine("Элементов с равными соседями нет - ничего не удалено.");
                        }

                        else
                        {
                            Console.WriteLine("Элементы списка, имеющие равных соседей, удалены.");
                        }
                    }

                    break;

                case 13:
                    do
                    {
                        amount = InputInteger("Введите количество элементов 1 малого списка:");
                    }while (amount < 0);

                    while (L1.Count != 0)
                    {
                        L1.DeleteFromEnd();
                    }

                    for (int i = 1; i <= amount; i++)
                    {
                        L1.AddToEnd(InputInteger("Введите значение номер " + i + ": "));
                    }

                    do
                    {
                        amount = InputInteger("Введите количество элементов 2 малого списка:");
                    }while (amount < 0);

                    while (L2.Count != 0)
                    {
                        L2.DeleteFromEnd();
                    }

                    for (int i = 1; i <= amount; i++)
                    {
                        L2.AddToEnd(InputInteger("Введите значение номер " + i + ": "));
                    }

                    if ((L1.Count == 0) && (L2.Count == 0))
                    {
                        while (L.Count != 0)
                        {
                            L.DeleteFromEnd();
                        }

                        Console.WriteLine("Новый список не создан - оба малых списка пусты.");
                    }

                    else
                    {
                        L = SortASCUnited(L1, L2);

                        Console.WriteLine("Создан возрастающий список из 2 др.");
                    }

                    break;

                default:
                    Console.WriteLine("Нет такой команды.");

                    break;
                }

                System.Threading.Thread.Sleep(2000);
            }while (true);
        }