示例#1
0
        /// <summary>
        /// returns the first of specified type in the queue
        /// if none of specified type, returns null
        /// if invalid type, returns null and reports invalid on console
        /// </summary>
        /// <param name="pref"> type of animal requested </param>
        /// <returns> found animal or null </returns>
        public Animal Dequeue(string pref)
        {
            Animal temp = null;

            if (pref == "")
            {
                return(Primary.Dequeue());
            }

            if (pref != "dog" && pref != "cat")
            {
                Console.WriteLine($"This shelter doesn't house {pref}s.");
                return(temp);
            }

            temp = Primary.Dequeue();

            while (Primary.Front != null && temp.Species != pref)
            {
                Helper.Enqueue(temp);
                temp = Primary.Dequeue();
            }
            while (Primary.Front != null)
            {
                Helper.Enqueue(Primary.Dequeue());
            }

            Queue hold;

            hold    = Primary;
            Primary = Helper;
            Helper  = hold;

            return(temp);
        }
示例#2
0
        public Animal Dequeue(string pref)
        {
            Animal temp = null;

            if (pref == "")
            {
                return(Primary.Dequeue());
            }
            if (pref != "dog" && pref != "cat")
            {
                Console.WriteLine("This animal does not exist");
                return(temp);
            }
            temp = Primary.Dequeue();
            // Checking to see if there is a match, if not send to secondary queue
            // If the primary has anything left in it after finding a match go ahead and send the rest to the second queue
            while (Primary.Front != null && temp.Species != pref)
            {
                Secondary.Enqueue(temp);
                temp = Primary.Dequeue();
            }
            while (Primary.Front != null)
            {
                Secondary.Enqueue(Primary.Dequeue());
            }
            Queue temp2;

            temp2     = Primary;
            Primary   = Secondary;
            Secondary = temp2;

            return(temp);
        }