public void Insert(T data, int index)
        {
            if (index == 0 && _head == null)
            {
                Append(data);
                return;
            }

            var topNode = GetNode(index);

            if (topNode == null)
            {
                throw new ArgumentOutOfRangeException(nameof(index), "Index out range");
            }

            if (index == 0)
            {
                var itemHead = _head;
                var node     = new SinglyLoopNode <T>(data);
                node.NextNode = itemHead;
                _head         = node;
                GetLastNode().NextNode.NextNode = _head;
            }
            else
            {
                var topNode_  = GetNode(index - 1);
                var itemNode_ = topNode_.NextNode;
                topNode_.NextNode          = new SinglyLoopNode <T>(data);
                topNode_.NextNode.NextNode = itemNode_;
            }

            _count += 1;
        }
        public void Append(T item)
        {
            var node = new SinglyLoopNode <T>(item, _head);

            if (IsEmpty())
            {
                _head = node;
            }
            else
            {
                GetLastNode().NextNode = node;
            }

            increasingCount();
        }
 public SinglyLoopLinkedList()
 {
     _head  = null;
     _count = 0;
 }
 public SinglyLoopNode(T data, SinglyLoopNode <T> nextNode)
 {
     Data     = data;
     NextNode = nextNode;
 }