public bool Remove(T item) { SingleLinkedListNode <T> previous = null; SingleLinkedListNode <T> current = Head; while (current != null) { if (current.Value.Equals(item)) { if (previous != null) { previous.Next = current.Next; if (current.Next == null) { Tail = previous; } Count--; } else { RemoveFirst(); } } previous = current; current = current.Next; } return(false); }
public void CopyTo(T[] array, int arrayIndex) { SingleLinkedListNode <T> current = Head; while (current != null) { array[arrayIndex++] = current.Value; current = current.Next; } }
public IEnumerator <T> GetEnumerator() { SingleLinkedListNode <T> current = Head; while (current != null) { yield return(current.Value); current = current.Next; } }
public void RemoveFirst() { if (Count != 0) { Head = Head.Next; Count--; if (Count == 0) { Tail = null; } } }
public void AddFirst(SingleLinkedListNode <T> node) { SingleLinkedListNode <T> temp = Head; Head = node; Head.Next = temp; Count++; if (Count == 1) { Tail = Head; } }
public void PrintList(string msg) { Console.Write(msg + "Single Linked List is : "); SingleLinkedListNode <T> current = Head; while (current != null) { Console.Write(current.Value + " -> "); current = current.Next; } Console.WriteLine(); }
public bool Contains(T item) { SingleLinkedListNode <T> current = Head; while (current != null) { if (current.Value.Equals(item)) { return(true); } current = current.Next; } return(false); }
public void AddLast(SingleLinkedListNode <T> node) { node.Next = null; if (Count == 0) { Head = node; } else { Tail.Next = node; } Tail = node; Count++; }
public void RemoveLast() { if (Count != 0) { if (Count == 1) { Head = null; Tail = null; } else { SingleLinkedListNode <T> current = Head; while (current.Next != Tail) { current = current.Next; } current.Next = null; Tail = current; } Count--; } }