/// <summary> /// Removes first node with value of preferred animal ("dog" or "cat") from front of queue /// </summary> /// <param name="pref">string specifying user's preferred type of animal</param> /// <returns>first node with value of user's preferred type of animal</returns> public AnimalNode <T> DequeueAnimal(AnimalNode <T> pref) { // Input validation if (Front == null) { return(null); } if (!pref.Value.Equals("dog") && !pref.Value.Equals("cat")) { return(null); } // Instantiate empty second queue for use below AnimalShelter <T> queue2 = new AnimalShelter <T>(); if (pref.Value.Equals(Peek().Value)) { return(Peek()); } else { while (Front.Next != null) { if (Front.Value.Equals(pref.Value)) { return(Front); } AnimalNode <T> temp = Front; Front = Front.Next; queue2.EnqueueAnimal(temp); } } // Fallback (should never happen) return(null); }
/// <summary> /// Adds new node with string value "dog" or "cat" to end of queue /// </summary> /// <param name="animal">string "dog" or "cat"</param> public void EnqueueAnimal(AnimalNode <T> animal) { //AnimalNode<T> newAnimal = new AnimalNode<T>(animal); if (Rear == null) { Front = animal; Rear = Front; } Rear.Next = animal; Rear = animal; }
// Constructor for "animal shelter" queue data structure public AnimalShelter(AnimalNode <T> animal) { Front = animal; Rear = animal; }