public class Queue { private ELEMENT[] data; private int head; private int tail; private int count; public Queue() { this(10); } public Queue(int capacity) { this.data = (ELEMENT[]) new Object[capacity]; this.head = 0; this.tail = 0; this.count = 0; } // Equivalent to Count property in C# public int size() { return this.count; } private int Next(int position) { return (++position >= this.data.length)? 0: position; } // Equivalent to Enqueue method in C# public void add(ELEMENT element) { if (this.count >= this.data.length) { throw new RuntimeException("La cola está llena..."); } this.data[this.tail] = element; this.tail = this.Next(this.tail); ++this.count; } // Equivalent to Dequeue method in C# public ELEMENT remove() { if (this.count <= 0) { throw new RuntimeException("La cola está vacía..."); } ELEMENT temp = this.data[this.head]; this.head = this.Next(this.head); --this.count; return temp; } }