private static void TestSingleLinkedListAddDeleteFindOperation()
        {
            // Single Linked List Operations
            Single.LinkedList<int> list = new Single.LinkedList<int>();

            list.AddFirst(1);

            list.AddFirst(5);
            list.AddFirst(8);

            Single.ListNode<int> head = null;
            head = PrintListNodes(list, head, "Print List");
            list.AddLast(18);
            list.AddFirst(12);
            list.AddLast(20);
            head = PrintListNodes(list, head, "Print List");

            list.AddAfterNthNode(5, 19);
            head = PrintListNodes(list, head, "Add 19 after 5th Node");

            list.RemoveAfterNthNode(1);
            head = PrintListNodes(list, head, "Remove 1st Node");

            list.RemoveAfterNthNode(6);
            head = PrintListNodes(list, head, "Remove 6th Node");

            list.RemoveAfterNthNode(4);
            head = PrintListNodes(list, head, "Remove 4th Node");

            list.Remove(5);
            head = PrintListNodes(list, head, "Remove Item 5");

            Single.ListNode<int> noderesult = list.FindKthNodeFormLast(list.Head, 3);
            Console.WriteLine(noderesult == null ? "NO Kth" : noderesult.Value + "__Found");
        }
        private static void TestSingleLinkedCycle()
        {
            // Single Linked List Operations
            Single.LinkedList<int> list = new Single.LinkedList<int>();

            list.AddFirst(1);
            list.AddFirst(5);
            list.AddFirst(8);

            // set list tail.next to some node to create cycle
            list.Tail.Next = list.Head.Next;
            bool iscyclefound = list.IsListHasLoop(list.Head);
            Console.WriteLine("Cycle {0}", iscyclefound);
        }
        private static void TestSingleLinkedPalindrome()
        {
            // Single Linked List Operations
            Single.LinkedList<int> list = new Single.LinkedList<int>();

            //list.AddFirst(1);
            //list.AddLast(5);
            //list.AddLast(8);
            //list.AddLast(8);
            //list.AddLast(5);
            //list.AddLast(1);

            // set list tail.next to some node to create cycle
            bool ispalindrome = list.IsPalindrome(list.Head, list.Count);
            Console.WriteLine("Palindrome {0}", ispalindrome);
        }