public void AddAfter(ConcurrentLinkedListNode <T> node, ConcurrentLinkedListNode <T> item) { if (_root == null) { throw new Exception("The linked list isn't contains nodes"); } SetNewNodeAfterTargetNode(node, item); }
public void AddLast(ConcurrentLinkedListNode <T> item) { if (_root == null) { InitializeRootNode(item); } else { Last.Next = item; item.Prev = Last; Last = item; } }
public ConcurrentLinkedListNode <T> AddAfter(ConcurrentLinkedListNode <T> node, T item) { if (_root == null) { throw new Exception("The linked list isn't contains nodes"); } var newNode = new ConcurrentLinkedListNode <T>() { Value = item }; SetNewNodeAfterTargetNode(node, newNode); return(newNode); }
public ConcurrentLinkedListNode <T> AddLast(T item) { var newNode = new ConcurrentLinkedListNode <T>() { Value = item }; if (_root == null) { InitializeRootNode(newNode); } else { Last.Next = newNode; newNode.Prev = Last; Last = newNode; } return(newNode); }
private void SetNewNodeAfterTargetNode(ConcurrentLinkedListNode <T> targetNode, ConcurrentLinkedListNode <T> newNode) { var pointer = _root; while (pointer != null) { if (pointer != targetNode) { pointer = pointer.Next; } else { break; } } if (pointer == null) { AddLast(newNode); } else { var nextNode = pointer.Next; pointer.Next = newNode; newNode.Prev = pointer; newNode.Next = nextNode; if (nextNode != null) { nextNode.Prev = newNode; } else { Last = newNode; } } }
private void SetNewNodeBeforeTargetNode(ConcurrentLinkedListNode <T> targetNode, ConcurrentLinkedListNode <T> newNode) { var pointer = _root; while (pointer != null) { if (pointer != targetNode) { pointer = pointer.Next; } else { break; } } if (pointer == null) { AddFirst(newNode); } else { var prevNode = pointer.Prev; pointer.Prev = newNode; newNode.Next = pointer; newNode.Prev = prevNode; if (prevNode != null) { prevNode.Next = newNode; } else { First = newNode; } } }
public (ConcurrentLinkedListNode <T>, bool) TryAddBefore(ConcurrentLinkedListNode <T> node, ConcurrentLinkedListNode <T> item, TimeSpan timeCallBack) { throw new NotImplementedException(); }
private void InitializeRootNode(ConcurrentLinkedListNode <T> item) { _root = item; First = _root; Last = _root; }
public bool TryAddLast(ConcurrentLinkedListNode <T> item, TimeSpan timeCallBack) { throw new NotImplementedException(); }
public ConcurrentLinkedListNode <T> TryAddAfter(ConcurrentLinkedListNode <T> node, ConcurrentLinkedListNode <T> item, TimeSpan timeCallBack) { throw new NotImplementedException(); }