private static void GenericDoublyLinkedListStackDemo() { DoublyLinkedListGenericStack <int> linkedListStack = new DoublyLinkedListGenericStack <int>(); int choice = 1; do { Console.Clear(); Console.WriteLine("1.Display the array\n2.Push An Element\n3.Pop an element\n4.Peek an element\n5.Exit\nPlease enter a choice"); choice = Convert.ToInt32(Console.ReadLine()); switch (choice) { case 1: linkedListStack.display(); Console.ReadKey(); break; case 2: Console.WriteLine("Enter the element to push\n"); int value = Convert.ToInt32(Console.ReadLine()); linkedListStack.push(value); Console.WriteLine("Pushed successfully"); Console.ReadKey(); break; case 3: var poppedvalue = linkedListStack.pop(); if (poppedvalue == null) { Console.WriteLine("Stack Underflow"); } else { Console.WriteLine("The element popped is " + (int)poppedvalue); } Console.ReadKey(); break; case 4: var peekedvalue = linkedListStack.peek(); if (peekedvalue == null) { Console.WriteLine("Stack Underflow"); } else { Console.WriteLine("The element peeked is " + peekedvalue); } Console.ReadKey(); break; default: Console.WriteLine("Please enter a valid choice"); Console.ReadKey(); break; } } while (choice != 5); }
private static void TowerOfHanoiDemo() { Console.WriteLine("Enter the number of rings to shift"); int ringsNum = Convert.ToInt32(Console.ReadLine()); int totalRings = ringsNum; DoublyLinkedListGenericStack <int> stackA = new DoublyLinkedListGenericStack <int>(); DoublyLinkedListGenericStack <int> stackB = new DoublyLinkedListGenericStack <int>(); DoublyLinkedListGenericStack <int> stackC = new DoublyLinkedListGenericStack <int>(); while (ringsNum != 0) { stackA.push(ringsNum--); } stackA.display(); SolveTowerOfHanoiRecursively(totalRings, ref stackA, ref stackC, ref stackB); Console.WriteLine("Displaying Source Stack :"); stackA.display(); Console.WriteLine("Displaying Destination Stack :"); stackC.display(); Console.WriteLine("Displaying Spare Stack :"); stackB.display(); Console.ReadKey(); }