internal Enumerator(Singly <T> singlyList) { _list = singlyList; _node = singlyList.Head; _current = default; _index = 0; }
private void InternalAddFirstNode(SinglyNode <T> node) { if (node == null) { Throw.ArgumentNullException(nameof(node)); } Head = Tail = node; ++Count; }
public bool MoveNext() { if (_node == null) { _index = _list.Count + 1; return(false); } ++_index; _current = _node.Item; _node = _node.Next; return(true); }
public void AddLast(T item) { var node = new SinglyNode <T>(item); if (IsEmpty) { InternalAddFirstNode(node); return; } Tail.Next = node; Tail = node; ++Count; }
public void AddFirst(T item) { var node = new SinglyNode <T>(item); if (IsEmpty) { InternalAddFirstNode(node); return; } node.Next = Head; Head = node; ++Count; }
public void Reset() { _current = default; _node = _list.Head; _index = 0; }
internal void Invalidate() => Next = null;
public SinglyNode(T item) { _comparer = EqualityComparer <T> .Default; Item = item; Next = null; }