public void TestDelete()
        {
            SingleLinkedlistOperation operation = new SingleLinkedlistOperation();

            operation.DeleteNodeByKey <int>(_SinglelinkeList, 3);
            Assert.AreEqual(_SinglelinkeList.Head.Next.Next.Data, 4);
        }
        public void ReverseLinkedList()
        {
            SingleLinkedlistOperation operation = new SingleLinkedlistOperation();
            var reversedList = operation.ReverseLinkeList(_SinglelinkeList);

            Assert.AreEqual(_SinglelinkeList.Head.Data, 4);
        }
        public void TestInsertAfter()
        {
            SingleLinkedlistOperation operation = new SingleLinkedlistOperation();

            operation.InsertAfter <int>(_SinglelinkeList.Head.Next.Next, 5);
            Assert.AreEqual(_SinglelinkeList.Head.Next.Next.Next.Data, 5);
        }
        public void TestInsertAtEnd()
        {
            SingleLinkedlistOperation operation = new SingleLinkedlistOperation();

            operation.InsertAtEnd(_SinglelinkeList, 5);
            Assert.AreEqual(GetLastNode(_SinglelinkeList).Data, 5);
        }
        public void TestInsertAtFront()
        {
            SingleLinkedlistOperation operation = new SingleLinkedlistOperation();

            operation.InsertAtFront(_SinglelinkeList, 5);
            Assert.AreEqual(_SinglelinkeList.Head.Data, 5);
        }
        public void TestGetListFromNthLocation()
        {
            SingleLinkedlistOperation operation = new SingleLinkedlistOperation();
            var curentNode = operation.GetAllItemfromNthLocation(_SinglelinkeList, 3);

            Assert.AreEqual(curentNode.Data, 3);
        }
        public void TestNonCyclicNode()
        {
            _SinglelinkeList           = new SinglyLinkedList <int>();
            _SinglelinkeList.Head      = new Node <int>(1);
            _SinglelinkeList.Head.Next = new Node <int>(2);
            var cyclicNode = new Node <int>(3);

            _SinglelinkeList.Head.Next.Next      = cyclicNode;
            _SinglelinkeList.Head.Next.Next.Next = new Node <int>(4);
            SingleLinkedlistOperation operation = new SingleLinkedlistOperation();

            var node = operation.GetStartOfTheLoop(_SinglelinkeList);

            Assert.IsNull(node);
        }
        public void TestRemoveNthFromEnd()
        {
            var operation = new SingleLinkedlistOperation();

            Node <int> node = new Node <int>(1);

            node.Next                = new Node <int>(2);
            node.Next.Next           = new Node <int>(3);
            node.Next.Next.Next      = new Node <int>(4);
            node.Next.Next.Next.Next = new Node <int>(5);

            var curentNode = operation.RemoveNthFromEndOpt <int>(node, 2);

            Assert.AreEqual(curentNode.Data, 3);
        }