/// <summary> /// Displays output of all items inside linked list. /// </summary> /// <param name="allItemsOutput">Linked List filled with strings from database information.</param> public void DisplayAllListItems(GenericLinkedList<string> allItemsOutput) { Console.WriteLine(); int indexInt = 0; while (indexInt < allItemsOutput.Length) { Console.WriteLine(allItemsOutput.Retrieve(1).Data); allItemsOutput.DeQueue(); indexInt++; } }
/// <summary> /// Modified bucket sort. /// </summary> public void SortBucket() { // Create stacks for each droid type. GenericLinkedList<IDroid> Protocol_Stack = new GenericLinkedList<IDroid>(); GenericLinkedList<IDroid> Utility_Stack = new GenericLinkedList<IDroid>(); GenericLinkedList<IDroid> Janitor_Stack = new GenericLinkedList<IDroid>(); GenericLinkedList<IDroid> Astromech_Stack = new GenericLinkedList<IDroid>(); // Create single queue for droids. GenericLinkedList<IDroid> Droid_Queue = new GenericLinkedList<IDroid>(); // Go through entire current collection and add droids to appropriate spots. indexInt = 0; while (indexInt < droidListSizeInt) { switch (((Droid)droidCollection[indexInt]).droidTypeString) { case "Protocol": Protocol_Stack.Push(droidCollection[indexInt]); break; case "Utility": Utility_Stack.Push(droidCollection[indexInt]); break; case "Janitor": Janitor_Stack.Push(droidCollection[indexInt]); break; case "Astromech": Astromech_Stack.Push(droidCollection[indexInt]); break; } indexInt++; } // Technically not needed, but added to be able to see that the list is empty before being popped off the queue. For debugging purposes. //Remove in final version. indexInt = 0; while (indexInt < droidListSizeInt) { droidCollection[indexInt] = null; indexInt++; } // Take droids off stacks and put into queue. while (Astromech_Stack.HeadNode != null) { Droid_Queue.Enqueue(Astromech_Stack.HeadNode.Data); Astromech_Stack.Pop(); } while (Janitor_Stack.HeadNode != null) { Droid_Queue.Enqueue(Janitor_Stack.HeadNode.Data); Janitor_Stack.Pop(); } while (Utility_Stack.HeadNode != null) { Droid_Queue.Enqueue(Utility_Stack.HeadNode.Data); Utility_Stack.Pop(); } while (Protocol_Stack.HeadNode != null) { Droid_Queue.Enqueue(Protocol_Stack.HeadNode.Data); Protocol_Stack.Pop(); } // Take droids out of queue and back into array. indexInt = 0; while (Droid_Queue.HeadNode != null) { droidCollection[indexInt] = Droid_Queue.HeadNode.Data; Droid_Queue.DeQueue(); indexInt++; } }