public LinkedList<T> InsertAfter(T key, T value) { Node insert = this.Head; insert.Value = value; while (!insert.Equals(null) && !insert.Value.Equals(key)) { insert = insert.Next; } insert.Next = new Node(value, insert.Next); return this; }
public void AddBefore(Node node, object content) { Node newNode = new Node(content); Node currentNode = this.Tail; while (currentNode != null) { if (currentNode.Equals(node)) { newNode.PrevNode = node.PrevNode; newNode.PrevNode.NextNode = newNode; newNode.NextNode = node; node.PrevNode = newNode; break; } currentNode = currentNode.NextNode; } }
public bool Remove(T item) { Node <T> current = Head; Node <T> previous = null; while (current != null) { if (current.Value.Equals(item)) { Count--; // Если узел в начале if (current.Equals(Head)) { Head = Head.Next; if (Head == null) { Tail = null; } return(true); } // Если узел в конце if (current.Next == null) { previous.Next = null; Tail = previous; return(true); } //Если в середине previous.Next = current.Next; return(true); } current = current.Next; previous = current; } return(false); }