/// <summary>
 /// Булевая на удаление на приват
 /// </summary>
 /// <param name="current"></param>
 /// <param name="data"></param>
 /// <returns></returns>
 private bool DeletePrivate(DoubleItem <int> current, int data)
 {
     if (current.Data.Equals(data))                    //если элемент найден
     {
         if (current.Next != null)                     //некст элемент не нул
         {
             current.Next.Previous = current.Previous; //привиус некст элемента = привиус текущий
         }
         else
         {
             Tail = current.Previous;              //конец списка - привиус текущий
         }
         if (current.Previous != null)             //привиус элемент не нул
         {
             current.Previous.Next = current.Next; //некст привиус элемента = нект текущий
         }
         else
         {
             Head = current.Next; //начало списка - некст текущий
         }
         Count--;                 //счётчик элементов минус
         return(true);
     }
     else if (current.Next != null)
     {
         if (DeletePrivate(current.Next, data))
         {
             return(true);                                                                //если не найден, то рекурсия
         }
     }
     return(false);
 }
        /// <summary>
        /// Задний нумератор
        /// </summary>
        /// <returns></returns>
        public IEnumerable <int> BackEnumerator()
        {
            DoubleItem <int> current = Tail;

            while (current != null)
            {
                yield return(current.Data);

                current = current.Previous;
            }
        }
        /// <summary>
        /// Добавление
        /// </summary>
        /// <param name="data"></param>
        public void Add(int data)
        {
            var item = new DoubleItem <int>(data);

            if (Head == null)
            {
                Head = item;
            }
            else
            {
                Tail.Next     = item;
                item.Previous = Tail;
            }
            Tail = item;
            Count++;
        }
 /// <summary>
 /// Булевая на поиск на приват
 /// </summary>
 /// <param name="current"></param>
 /// <param name="data"></param>
 /// <returns></returns>
 private bool FindElement(DoubleItem <int> current, int data)
 {
     if (current.Data.Equals(data))   //если элемент найден
     {
         return(true);
     }
     else if (current.Next != null)   //если не найден, то рекурсия
     {
         if (FindElement(current.Next, data))
         {
             return(true);
         }
         else if (current.Next == null)
         {
             return(false);                         //если некст нулл = фолс
         }
     }
     return(false);
 }
        /// <summary>
        /// Добавление в массив
        /// </summary>
        /// <param name="i"></param>
        /// <param name="array"></param>
        private void AddMas(int i, params int[] array)
        {
            var item = new DoubleItem <int>(array[i]);

            if (Head == null)
            {
                Head = item;          //добавление в голову
            }
            else                      //добавление после головы
            {
                Tail.Next     = item; //некст после ласт = item
                item.Previous = Tail; //привиус перед айтем = tail
            }
            Tail = item;              //конец - item;
            Count++;                  //+элемент
            if (i + 1 < array.Length)
            {
                AddMas(i + 1, array);   //рекурсия
            }
            else
            {
                return;
            }
        }