/// <summary> /// Удаление элемента из списка. /// </summary> /// <param name="item">Элемент.</param> /// <returns>Был ли удален элемент.</returns> public bool Remove(T item) { var indirect = new ListCollectionNode <T>(next: _head); while (indirect.Next != null && !EqualityComparer <T> .Default.Equals(indirect.Next.Info, item)) { indirect = indirect.Next; } var result = indirect.Next != null; if (result) { if (indirect.Next == _head) { _head = _head.Next; } else { indirect.Next = indirect.Next.Next; } Count--; } return(result); }
/// <summary> /// Добавление звена в список. /// </summary> /// <param name="listCollectionNode">Звено, к которому происходит присоединение.</param> /// <param name="item">Элемент, содержащийся в новом звене.</param> /// <returns>Добавленное звено.</returns> private ListCollectionNode <T> AddNode(ref ListCollectionNode <T> listCollectionNode, T item) { Count++; var result = new ListCollectionNode <T>(item, listCollectionNode); listCollectionNode = result; return(result); }
/// <summary> /// Удаление элемента по указанному индексу. /// </summary> /// <param name="index">Индекс элемента.</param> public void RemoveAt(int index) { if ((uint)index >= (uint)Count) { throw new ArgumentOutOfRangeException(); } if (index == 0) { _head = _head.Next; } else { var indirect = GetNodeByIndex(index - 1); indirect.Next = indirect.Next.Next; } Count--; }
/// <summary> /// Очистка списка. /// </summary> public void Clear() { _head = null; Count = 0; }
public ListCollectionNode(ListCollectionNode <T> next) { Next = next; }
public ListCollectionNode(T info, ListCollectionNode <T> next) { Info = info; Next = next; }