// // This file contains the C# code from Program 6.16 of // "Data Structures and Algorithms // with Object-Oriented Design Patterns in C#" // by Bruno R. Preiss. // // Copyright (c) 2001--2002 by Bruno R. Preiss, P.Eng. All rights reserved. // // http://www.brpreiss.com/books/opus6/programs/pgm06_16.txt // public class QueueAsArray : AbstractContainer, Queue { protected object[] array; protected int head; protected int tail; public object Head { get { if (count == 0) throw new ContainerEmptyException(); return array[head]; } } public void Enqueue(object obj) { if (count == array.Length) throw new ContainerFullException(); if (++tail == array.Length) tail = 0; array[tail] = obj; ++count; } public object Dequeue() { if (count == 0) throw new ContainerEmptyException(); object result = array[head]; array[head] = null; if (++head == array.Length) head = 0; --count; return result; } // ... }