static void Main(string [] args)
        {
            int choice, data, k, x;

            SingleLinkedList list = new SingleLinkedList();

            list.CreateList();

            while (true)
            {
                Console.WriteLine("1. Display List");
                Console.WriteLine("2. Count the number of nodes");
                Console.WriteLine("3. Search for an element");
                Console.WriteLine("4. Insert in empty/Insert in beginning oof the list");
                Console.WriteLine("5. Insert a node at the end of the lsit");
                Console.WriteLine("6. Insert a node after a specific node");
                Console.WriteLine("7. Insert a node before a specific node");
                Console.WriteLine("8. Insert a node at a given position");
                Console.WriteLine("9. Delete first node");
                Console.WriteLine("10. Delete last node");
                Console.WriteLine("11. Delete any node");
                Console.WriteLine("12. Reverse the list");
                Console.WriteLine("13. Bubble sort by exchanging data");
                Console.WriteLine("14. Bubble sort by exchanging links");
                Console.WriteLine("15. MergeSort");
                Console.WriteLine("16. Insert cycle");
                Console.WriteLine("17. Detect Cycle");
                Console.WriteLine("18. Remove Cycle");
                Console.WriteLine("19. Quit");

                Console.WriteLine("Enter Your Choice: ");
                choice = Convert.ToInt32(Console.ReadLine());

                if (choice == 19)
                {
                    break;
                }

                switch (choice)
                {
                case 1:
                    list.DisplayList();
                    break;

                case 2:
                    list.CountNodes();
                    break;

                case 3:
                    Console.WriteLine("Enter the element to be searched: ");
                    data = Convert.ToInt32(Console.ReadLine());
                    list.Search(data);
                    break;

                case 4:
                    Console.WriteLine("Enter the elementto be inserted: ");
                    data = Convert.ToInt32(Console.ReadLine());
                    list.InsertInBeginning(data);
                    break;

                case 5:
                    Console.WriteLine("Enter the element to be inserted");
                    data = Convert.ToInt32(Console.ReadLine());
                    list.InsertAtEnd(data);
                    break;

                case 6:
                    Console.WriteLine("Enter the element to ber inserted");
                    data = Convert.ToInt32(Console.ReadLine());
                    Console.Write("Enter the element after which to insert: ");
                    x = Convert.ToInt32(Console.ReadLine());
                    list.InsertAfter(data, x);
                    break;

                case 7:
                    Console.WriteLine("Enter the element to be inserted: ");
                    data = Convert.ToInt32(Console.ReadLine());
                    Console.Write("Enter the element before which to be inserted: ");
                    x = Convert.ToInt32(Console.ReadLine());
                    list.InsertBefore(data, x);
                    break;

                case 8:
                    Console.WriteLine("Enter the element to be inserted: ");
                    data = Convert.ToInt32(Console.ReadLine());
                    Console.Write("Enter the position at which to insert: ");
                    k = Convert.ToInt32(Console.ReadLine());
                    list.InsertAtPosition(data, k);
                    break;

                case 9:
                    list.DeleteFirstNode();
                    break;

                case 10:
                    list.DeleteLastNode();
                    break;

                case 11:
                    Console.WriteLine("Enter theelement to be deleted: ");
                    data = Convert.ToInt32(Console.ReadLine());
                    list.DeleteNode(data);
                    break;

                case 12:
                    list.ReverseList();
                    break;

                case 13:
                    list.BubbleSortExData();
                    break;

                case 14:
                    list.BubbleSortExLinks();
                    break;

                case 16:
                    Console.WriteLine("Enter the element which the cycle has to be inserted");
                    data = Convert.ToInt32(Console.ReadLine());
                    list.InsertCycle(data);
                    break;

                case 17:
                    if (list.HasCycle())
                    {
                        Console.WriteLine("List has a cycle");
                    }
                    else
                    {
                        Console.WriteLine("List does not have a cycle");
                    }
                    break;

                case 18:
                    list.RemoveCycle();
                    break;

                default:
                    Console.WriteLine("Wrong choice");
                    break;
                }
                Console.WriteLine();
            }
            Console.WriteLine("Exiting");
        }
 private static void RemoveFromTheEnd(SingleLinkedList <string> sll)
 {
     sll.DeleteFromTheEnd();
     DisplayTheNodes(sll);
 }
 public static void InsertNodeAtGivenPosition(SingleLinkedList <string> sll)
 {
 }
 private static void InsertAtTheEnd(SingleLinkedList <string> sll, string data)
 {
     sll.InsertAtEnd(data);
     DisplayTheNodes(sll);
 }