static void Main(string[] args) { bool session = true; while (session == true) { //Session Started Console.WriteLine(@"What Would You Like To Do? +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DOUBLY LINKED LIST ==> PRESS 1 STACK ==> PRESS 2 QUEUE ==> Press 3 EXIT ==> PRESS 4 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ "); Console.WriteLine(); Console.WriteLine(); Console.WriteLine(); int response = Convert.ToInt32(Console.ReadLine()); if (response == 1) { DLinkedList <string> populate = new DLinkedList <string>(); bool linklistsession = true; while (linklistsession == true) { Console.WriteLine(@"OPTIONS: Add Head ==> PRESS 1 Add Tail ==> PRESS 2 Get Head ==> PRESS 3 Get Tail ==> PRESS 4 Remove Head ==> PRESS 5 Remove Tail ==> PRESS 6 Remove value ==> PRESS 7 Check Size ==> PRESS 8 Check IF Empty ==> PRESS 9 Check Value ==> PRESS 10 Search ==> PRESS 11 Index of Value ==> PRESS 12 Pint ==> PRESS 13 Main Menu ==> 14"); int linkListResponse = Convert.ToInt32(Console.ReadLine()); // Add a value to the Head of the Linked List if (linkListResponse == 1) { Console.WriteLine("Enter the value to Add to the head: "); string value = Console.ReadLine(); populate.AddHead(value); } // Add a value to the Tail of the List else if (linkListResponse == 2) { Console.WriteLine("Enter the value to Add to the tail: "); string value = Console.ReadLine(); populate.AddTails(value); } //Returns the Head node Of the Linked List else if (linkListResponse == 3) { Console.WriteLine($"The Head Node is {populate.head.Value}"); } //Return the Tail node of the Linked List else if (linkListResponse == 4) { Console.WriteLine($"The tail Node is {populate.tail.Value}"); } //Return The head node of the Linked list else if (linkListResponse == 5) { populate.RemoveHead(); Console.Write($"Remaing Node: "); populate.Print(); } // Remove the Tail node of the Linked List else if (linkListResponse == 6) { populate.RemoveTail(); Console.Write($"Remaining Node: "); populate.Print(); } //Remove a value From the linked List else if (linkListResponse == 7) { string value = Console.ReadLine(); populate.Remove(value); Console.WriteLine("The Remaining Node: "); populate.Print(); } //Returns the size of the Linked list else if (linkListResponse == 8) { Console.Write("The size of the Linked List is: "); populate.Size(); } // Checks if the link list is empty or contain nodes else if (linkListResponse == 9) { bool answer = populate.isEmpty(); if (answer == true) { Console.WriteLine("The Array is EMPTY!!!"); } else { Console.WriteLine("The Array is NOT EMPTY!!!"); } } //Check for a value in the linked list else if (linkListResponse == 10) { Console.WriteLine("Enter the value to Check: "); string value = Console.ReadLine(); bool answer = populate.Check(value); string report = (answer == true) ? "FOUND" : "NOT FOUND"; Console.WriteLine(report); } //Search for a value in the Linked list else if (linkListResponse == 11) { string value = Console.ReadLine(); populate.Search(value); } //Return the index of a Node int the Liked List else if (linkListResponse == 12) { string value = Console.ReadLine(); Console.WriteLine($"The index of {value} is {populate.Index(value)}"); } //Print the linked list else if (linkListResponse == 13) { populate.Print(); } //Close Linked list session else if (linkListResponse == 14) { linklistsession = false; } // Ask the user again if the input was not valid else { Console.WriteLine(" PLEASE ENTER A VALID NUMBER!!!!!!!!!!!!!!!!"); } } } //Generic Stack else if (response == 2) { //Instance of a new stack GenericStack <string> own = new GenericStack <string>(); //Generic stack sessio bool stackSession = true; while (stackSession == true) { //Options Console.WriteLine(@"Options: Push ==> PRESS 1 Pop ==> PRESS 2 Peek ==> PRESS 3 Size ==> PRESS 4 Check Empty ==> PRESS 5 Print ==> PRESS 6 Main Menu ==> PRESS 7"); int stackResponse = Convert.ToInt32(Console.ReadLine()); //Push a Node to top of the stack if (stackResponse == 1) { string value = Console.ReadLine(); own.Push(value); Console.Write("The Stack is now: "); own.Print(); } // Removes a node from the top of the stack else if (stackResponse == 2) { own.Pop(); Console.Write("The Stack is now: "); own.Print(); } //Returns the node at the top of the stack else if (stackResponse == 3) { Console.WriteLine($"The node at the top of the Stack is: "); own.Peek(); } //Returns the size of the stack else if (stackResponse == 4) { Console.WriteLine($"The Size of the Stack is {own.Size()}"); } //Returns if the stack is empty or Not else if (stackResponse == 5) { var result = (own.Size() == 0) ? true : false; if (result == true) { Console.WriteLine("The Stack is Empty: "); } else { Console.WriteLine("The Stack is Not Empty: "); } } //Print all the nodes in the stack else if (stackResponse == 6) { Console.WriteLine("All Nodes in the Stack: "); own.Print(); } //Ends Stack Session else if (stackResponse == 7) { stackSession = false; } //Ask the user again if the value was invalid else { Console.WriteLine("PLEASE ENTER A VALID NUMBER!!!!!!!!!!!!!!!!!!"); } } } else if (response == 3) { // Stack session started //An instance of Queue is created GenericQueue <string> bam = new GenericQueue <string>(); bool queueSession = true; while (queueSession == true) { //Options Console.WriteLine(@"OPTIONS Enqueue ==> PRESS 1 Dequeue ==> PRESS 2 Size ==> PRESS 3 Check Empty ==> PRESS 4 Print ==> PRESS 5"); int queueResponse = Convert.ToInt32(Console.ReadLine()); if (queueResponse == 1) { //Add a node to the tail of the queue string value = Console.ReadLine(); bam.Enqueue(value); Console.Write($"The Queue is now: "); bam.Print(); } //Removes a node from the head of the Queue else if (queueResponse == 2) { bam.Dequeue(); Console.WriteLine("The is Queue is now: "); bam.Print(); } //Find the size of the QUeue else if (queueResponse == 3) { Console.WriteLine($"The Size of the Queue is {bam.Size()}"); } //Returns Empty or Not else if (queueResponse == 4) { bool result = (bam.Size() == 0) ? true : false; if (result == true) { Console.WriteLine($"The Queue is Empty"); } else { Console.WriteLine("The Queue is Not Empty"); } } //Returns all the node in the queue else if (queueResponse == 5) { Console.WriteLine("The Item on the Queue: "); bam.Print(); } else { // ends the queue session queueSession = false; } } } else { //ends all session session = false; } } }