static void Main(string[] args)
        {
            MyLinkedList list = new MyLinkedList();

            list.addLast(10);
            list.addLast(20);
            list.addLast(30);
            list.addLast(40);
            list.addLast(50);
            list.addLast(60);
            list.addLast(70);

            Console.WriteLine("Middle node is :" + list.printMiddle(list));

            Console.WriteLine("index is " + list.indexOf(40));
            Console.WriteLine("index is " + list.indexOf(300));
            Console.WriteLine("contains " + list.contains(300));


            Console.WriteLine(list.getSize());
            var arrays = list.toArray(list);

            Console.WriteLine("toArray :" + list.printArray(arrays));


            list.Reverse(list);
            Console.WriteLine("Reverse :" + list.printLinkedList(list));


            list.DeleteFirst();

            Console.WriteLine("Kth node from end " + list.getKthFromTheEnd(4));

            Console.WriteLine("Does old list has loop ? " + list.hasLoop());

            var newList = list.CreateListWithLoop();

            Console.WriteLine("Does new list has loop ? " + newList.hasLoop());


            //-----------------LinkedListQueue ---------------------------//

            LinkedListQueue lq = new LinkedListQueue();

            lq.enqueue(10);
            lq.enqueue(20);
            lq.enqueue(30);

            var removedItem = lq.dequeue();

            Console.WriteLine("Item removed from LinkedListQueue is :" + removedItem);

            Console.WriteLine("Item to peek from LinkedListQueue is :" + lq.peek());

            Console.WriteLine("Is LinkedListQueue empty?: " + lq.isEmpty());

            Console.ReadLine();
        }