public void AddBefore(MySinglyLinkedListNode <T> node, MySinglyLinkedListNode <T> newNode) { if (node == null || newNode == null) { throw new ArgumentNullException(); } if (Count == 0) { throw new ArgumentException(); } if (node == Head) { AddFirst(newNode); } else { var h = Head; while (h != null && h.Next != node) { h = h.Next; } if (h == null) { throw new ArgumentException(); } newNode.Next = h.Next; h.Next = newNode; Count++; } }
public void AddAfter(MySinglyLinkedListNode <T> node, MySinglyLinkedListNode <T> newNode) { if (node == null || newNode == null) { throw new ArgumentNullException(); } if (Count == 0) { throw new ArgumentException(); } MySinglyLinkedListNode <T> head = Head; while (head != null && head != node) { head = head.Next; } if (head == null) { throw new ArgumentException(); } newNode.Next = head.Next; head.Next = newNode; Count++; }
public MySinglyLinkedList(MySinglyLinkedListNode <T> head) { Head = head; var h = head; while (h != null) { Count++; h = h.Next; } }
private MySinglyLinkedListNode <T> FindLastHelper( MySinglyLinkedListNode <T> node, T value) { if (node.Next != null) { var res = FindLastHelper(node.Next, value); if (res != null) { return(res); } } if (node.Data.Equals(value)) { return(node); } return(null); }
public void AddFirst(MySinglyLinkedListNode <T> node) { if (node == null) { throw new ArgumentNullException(); } if (Head == null) { Head = node; } else { node.Next = Head; Head = node; } Count++; }
public void AddLast(MySinglyLinkedListNode <T> node) { if (node == null) { throw new ArgumentNullException(); } if (Head == null) { Head = node; } else { var h = Head; while (h.Next != null) { h = h.Next; } h.Next = node; } Count++; }
public bool Remove(MySinglyLinkedListNode <T> node) { if (node == null) { throw new ArgumentNullException(); } var h = Head; while (h != null) { if (h.Next == node) { h.Next = h.Next.Next; Count--; return(true); } h = h.Next; } return(false); }
public MySinglyLinkedList(T data) { Head = new MySinglyLinkedListNode <T>(data); Count = 1; }
public bool Contains(MySinglyLinkedListNode <T> node) => Find(node.Data) != null;