public static void Main() { // Declare new doubly linked list of type int, using Generics<T>. // Big Oh notated below in Main. DoublyLinkedList <int> ll = new DoublyLinkedList <int>(); Console.WriteLine("Populate new linked list using AddFirst, AddLast and AddBefore."); // O(1) ll.AddFirst(3); // Create new node to insert. var n = new Node <int>(7); // AddLast by node, O(1). ll.AddLast(n); // Insert 5 before the 7 node, O(n). ll.AddBefore(n, 5); // AddLast by value, O(1). ll.AddLast(9); Console.WriteLine("Print:"); ll.Print(); // O(n) Console.WriteLine("Print Reverse:"); // Print Reverse ll.PrintReverse(); // O(n) Console.WriteLine("Remove nodes using RemoveFirst, RemoveLast, Remove(value) methods."); ll.Remove(7); // O(n) ll.Print(); ll.RemoveFirst(); // O(1) ll.Print(); ll.RemoveLast(); // O(1) ll.Print(); ll.Clear(); // O(1) Console.WriteLine("Clear linked list."); Console.WriteLine($"Linked list is Empty: {ll.IsEmpty()}"); // O(1) }