public static void Main() { // Create a new doubly linked list of type int. DoublyLinkedList <int> dll = new DoublyLinkedList <int>(); Console.WriteLine("Populate new doubly linked list that is NOT a palindrome..."); dll.AddFirst(3); dll.AddLast(5); dll.AddLast(7); dll.AddLast(9); Console.WriteLine("Print:"); dll.Print(); Console.WriteLine("Print Reverse:"); dll.PrintReverse(); // The IsPalindrome contains 3 methods: // IsPalindrome: O(2n) // ReverseAndCopy: O(n), with O(n) space. // IsEqual: O(n) // Runtime for IsPalindrome method execution: O(2n) -> O(n) // with O(n) extra memory. // Still trying to work in generics, only accepts type int right now. Console.WriteLine($"Is linked list a palindrome: {dll.IsPalindrome(dll.Head)}"); Console.WriteLine(); Console.WriteLine("Clear linked list."); dll.Clear(); Console.WriteLine($"Linked list is Empty: {dll.IsEmpty()}"); Console.WriteLine(); Console.WriteLine("Populate new doubly linked list that IS a palindrome..."); dll.AddFirst(3); dll.AddLast(5); dll.AddLast(7); dll.AddLast(5); dll.AddLast(3); Console.WriteLine("Print:"); dll.Print(); Console.WriteLine("Print Reverse:"); dll.PrintReverse(); Console.WriteLine($"Is linked list a palindrome: {dll.IsPalindrome(dll.Head)}"); }