Пример #1
0
 private static void ListTop(LinkedListDouble list)
 {
     try
     {
         Console.WriteLine($"[{list.Top()}]");
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
     }
 }
Пример #2
0
        static LinkedListDouble GetListWithRandomElements()
        {
            int size = GetInt("Введите длину списка", min: 0);

            double[] elements = new double[size];
            Random   rnd      = new Random();

            for (int i = 0; i < size; i++)
            {
                elements[i] = rnd.NextDouble() + rnd.Next(-1, 1);
            }
            return(LinkedListDouble.MakeLinkedListDouble(elements));
        }
Пример #3
0
        private static void ExtractFromList(LinkedListDouble list)
        {
            int position = GetInt(
                "Введите номер позиции для извлечения элемента: ",
                min: 0);

            try
            {
                Console.WriteLine($"[{list.Extract(position)}]");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
Пример #4
0
        private static void InsertInList(LinkedListDouble list)
        {
            int position = GetInt(
                "Введите номер позиции для вставки элемента: ",
                min: 0);

            try
            {
                list.Add(GetDouble("Введите вещественное значение элемента: "),
                         position);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
        public static LinkedListDouble MakeLinkedListDouble(params double[] values)
        {
            if (values.Length == 0)
            {
                return(new LinkedListDouble());
            }
            var list        = new LinkedListDouble(values[0]);
            var currentNode = list.Head;

            for (int i = 1; i < values.Length; i++)
            {
                currentNode.Next = new NodeDouble(values[i]);
                currentNode      = currentNode.Next;
            }
            return(list);
        }
Пример #6
0
        private static void InsertZeros(LinkedListDouble list)
        {
            if (list.Head == null)
            {
                return;
            }
            NodeDouble currentNode = list.Head;

            do
            {
                if (currentNode.Value < 0)
                {
                    NodeDouble tmp = currentNode.Next;
                    currentNode.Next      = new NodeDouble(0);
                    currentNode.Next.Next = tmp;
                    currentNode           = currentNode.Next;
                }
                else
                {
                    currentNode = currentNode.Next;
                }
            } while (currentNode != null);
        }
Пример #7
0
        public static void Show()
        {
            Console.WriteLine("\nРабота с односвязными списками");
            var    list       = new LinkedListDouble();
            string operations = "Операции со списком:"
                                + "\n\t1 Создать пустой список"
                                + "\n\t2 Создать список заданной длины со случайными элементами"
                                + "\n\t3 Вывести список"
                                + "\n\t4 Вывести длину списка"
                                + "\n\t5 Добавить элемент в начало списка"
                                + "\n\t6 Добавить элемент в конец списка"
                                + "\n\t7 Добавить элемент в заданную позицию"
                                + "\n\t8 Извлечь первый элемент"
                                + "\n\t9 Извлечь последний элемент"
                                + "\n\t10 Извлечь элемент в заданной позиции"
                                + "\n\t11 Добавить в список после каждого элемента с отрицательным "
                                + "значением элемент равный 0"
                                + "\n\t12 Повтор меню";

            Console.WriteLine(operations);
            int number = -1;

            while (number != 0)
            {
                number = GetInt("Введите номер операции. Для выхода введите 0, "
                                + "для повтора меню 12", min: -1, max: 12);
                switch (number)
                {
                case 0: break;

                case 1:
                    list = new LinkedListDouble(); break;

                case 2:
                    list = GetListWithRandomElements();
                    list.Print();
                    break;

                case 3: list.Print(); break;

                case 4:
                    Console.WriteLine($"Длина списка = {list.Length}");
                    break;

                case 5:
                    list.Add(GetDouble("Введите вещественное значение элемента: "));
                    list.Print();
                    break;

                case 6:
                    list.AppEnd(GetDouble("Введите вещественное значение элемента: "));
                    list.Print();
                    break;

                case 7:
                    InsertInList(list);
                    list.Print();
                    break;

                case 8:
                    ListTop(list);
                    list.Print();
                    break;

                case 9:
                    ListBottom(list);
                    list.Print();
                    break;

                case 10:
                    ExtractFromList(list);
                    list.Print();
                    break;

                case 11:
                    InsertZeros(list);
                    list.Print();
                    break;

                case 12:
                    Console.WriteLine(operations);
                    break;
                }
            }
        }