public void Delete(T data) { if (Head != null) { var item = new LinkedListItem <T>(data); if (Head.Data.Equals(item.Data)) { Head = Head.Next; Count--; return; } var current = Head.Next; var previous = Head; while (current.Next != null) { if (current.Data.Equals(item.Data)) { if (current.Next != null) { previous.Next = current.Next; Count--; return; } else { previous.Next = null; Count--; return; } } previous = current; current = current.Next; } } else { throw new ArgumentNullException("Linked list is empty!"); } }
public void SetAfter(T after, T data) { if (Head != null) { var current = Head; while (current != null) { if (current.Data.Equals(after)) { var item = new LinkedListItem <T>(data); item.Next = current.Next; current.Next = item; Count++; return; } current = current.Next; } } else { SetHeadAndTail(data); } }