/// <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; } }