public void AddAfter(DoublyNodeLinkedListNode <T> current, DoublyNodeLinkedListNode <T> newNode)
 {
     newNode.Next      = current.Next;
     current.Next.Prev = newNode;
     newNode.Prev      = current;
     current.Next      = newNode;
 }
 public DoublyNodeLinkedListNode
     (T data,
     DoublyNodeLinkedListNode <T> prev = null,
     DoublyNodeLinkedListNode <T> next = null)
 {
     this.Data = data;
     this.Prev = prev;
     this.Next = next;
 }
        //Add
        //AddAfter
        //GetIndex

        public void Add(DoublyNodeLinkedListNode <T> newNode)
        {
            if (_head is null)
            {
                _head      = newNode;
                _head.Prev = _head;
                _head.Next = _head;
            }
            else
            {
                var current = _head;

                var tail = current.Prev;

                current.Prev = newNode;
                tail.Next    = newNode;
                newNode.Prev = tail;
                newNode.Next = current;
            }
        }