Beispiel #1
0
        /// <summary>
        /// Удаляет из списка элемент с заданным значением.
        /// </summary>
        /// <param name="number">Значение элемента.</param>
        public El Remove(int number)
        {
            El searchEl = Search(number), predEl = this;

            if (searchEl == this)
            {
                while (predEl.next != this)
                {
                    predEl = predEl.next;
                }
                predEl.next = next;
                Console.WriteLine("\nЭлемент " + searchEl + " успешно удалён.\n\nИзменённый список:");
                next.Print();
                return(next);
            }

            while (predEl.next != searchEl)
            {
                predEl = predEl.next;
            }

            predEl.next = searchEl.next;
            Console.WriteLine("\nЭлемент " + searchEl + " успешно удалён.\n\nИзменённый список:");
            Print();
            return(this);
        }
Beispiel #2
0
        /// <summary>
        /// Создаёт новый списк заданного размера.
        /// </summary>
        /// <param name="capacity">Размер списка.</param>
        /// <returns></returns>
        public static El MakeList(int capacity)
        {
            int number = 1;
            El  el     = new El(number);

            while (number < capacity)
            {
                el.Add(++number);
            }

            return(el);
        }
Beispiel #3
0
        /// <summary>
        /// Добавляет элемент в список.
        /// </summary>
        /// <param name="number">Значение элемента.</param>
        private void Add(int number)
        {
            El newEl = new El(number), el = this;

            while (el.next != this)
            {
                el = el.next;
            }

            newEl.next = el.next;
            el.next    = newEl;
        }
Beispiel #4
0
        /// <summary>
        /// Печатает список.
        /// </summary>
        public void Print()
        {
            El el = this;

            Console.Write(el.ToString() + " ");
            while (el.next != this)
            {
                el = el.next;
                Console.Write(el.ToString() + " ");
            }
            Console.WriteLine();
        }
Beispiel #5
0
        /// <summary>
        /// Ищет в списке элемент с заданным значением.
        /// </summary>
        /// <param name="number">Значение элемента.</param>
        /// <returns></returns>
        public El Search(int number)
        {
            El el = this;

            while (el.number != number)
            {
                el = el.next;
                if (el == this)
                {
                    throw new NullReferenceException("Элемент не найден.");
                }
            }

            return(el);
        }
Beispiel #6
0
 /// <summary>
 /// Конструктор элемента.
 /// </summary>
 /// <param name="number">Значение элемента.</param>
 private El(int number)
 {
     this.number = number;
     next        = this;
 }
Beispiel #7
0
        static void Main(string[] args)
        {
            while (status)
            {
                switch (mainMenu.Show())
                {
                case ConsoleKey.NumPad1:
                case ConsoleKey.D1:
                    Console.Clear();
                    List = El.MakeList(Get.Int32("Введите количество элементов в списке: "));
                    break;

                case ConsoleKey.NumPad2:
                case ConsoleKey.D2:
                    Console.Clear();
                    if (List != null)
                    {
                        try
                        {
                            List = List.Remove(Get.Int32("Введите удаляемый элемент: "));
                        }
                        catch (NullReferenceException error)
                        {
                            Console.WriteLine('\n' + error.Message + '\n');
                        }
                    }
                    else
                    {
                        Console.WriteLine("Список не создан.");
                    }
                    Get.Wait();
                    break;

                case ConsoleKey.NumPad3:
                case ConsoleKey.D3:
                    Console.Clear();
                    if (List != null)
                    {
                        try
                        {
                            El findEl = List.Search(Get.Int32("Введите искомый элемент: "));
                            Console.WriteLine("Элемент " + findEl + " найден.\n");
                        }
                        catch (NullReferenceException error)
                        {
                            Console.WriteLine('\n' + error.Message + '\n');
                        }
                    }
                    else
                    {
                        Console.WriteLine("Список не создан.");
                    }
                    Get.Wait();
                    break;

                case ConsoleKey.NumPad4:
                case ConsoleKey.D4:
                    Console.Clear();
                    if (List != null)
                    {
                        List.Print();
                    }
                    else
                    {
                        Console.WriteLine("Списко не создан.\n");
                    }
                    Get.Wait();
                    break;

                case ConsoleKey.Escape:
                    status = false;
                    break;

                default:
                    Console.Clear();
                    Console.WriteLine("Выбран несуществующий пункт меню.");
                    Get.Wait();
                    break;
                }
            }
        }