In: Computer Science
Add a method to OurQueue class that dequeues the Nth item on a queue and returns it. It must remove the Nth item from the Queue but leave the rest of the queue.
Test it with the following code:
            Console.WriteLine("Testing DequeueNth");
            OurQueue<string> ourQ = new OurQueue<string>(12);
            // Empty Q
            try
            {
                ourQ.DequeueNth(0);
                Console.WriteLine("\a Error on empty list");
            }
            catch
            {
                Console.WriteLine("Empty Queue worked");
            }
            for (int i = 0; i < 9; ++i)
                ourQ.Enqueue("a" + i);
            for (int i = 0; i < 7; ++i)
                ourQ.Dequeue();
            for (int i = 0; i < 5; ++i)
                ourQ.Enqueue("b" + i);
            Console.WriteLine(ourQ);
            Console.WriteLine("Deleted {0}", ourQ.DequeueNth(5));
            Console.WriteLine(ourQ);
            Console.WriteLine("Deleted {0}", ourQ.DequeueNth(4));
            Console.WriteLine(ourQ);
public class ListQueue<T> : List<T>
{
new public void Add(T item) { throw new NotSupportedException();
}
new public void AddRange(IEnumerable<T> collection) { throw
new NotSupportedException(); }
new public void Insert(int index, T item) { throw new
NotSupportedException(); }
new public void InsertRange(int index, IEnumerable<T>
collection) { throw new NotSupportedException(); }
new public void Reverse() { throw new NotSupportedException();
}
new public void Reverse(int index, int count) { throw new
NotSupportedException(); }
new public void Sort() { throw new NotSupportedException(); }
new public void Sort(Comparison<T> comparison) { throw new
NotSupportedException(); }
new public void Sort(IComparer<T> comparer) { throw new
NotSupportedException(); }
new public void Sort(int index, int count, IComparer<T>
comparer) { throw new NotSupportedException(); }
public void Enqueue(T item)
{
base.Add(item);
}
public T Dequeue()
{
var t = base[0];
base.RemoveAt(0);
return t;
}
public T Peek()
{
return base[0];
}
}