Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Practico3;
- public class Queue<E> {
- //Definicion de una constante para la capacidad por defecto de la Queue.
- private final static int defaultCapacity = 10;
- //Definicion de un Array de elementos.
- private E[] container;
- //Definicion de variables.
- private int tail,head,count;
- //Constructor sin parametro.
- public Queue() {
- this(Queue.defaultCapacity);
- }
- //Constructor con parametro(tamaΓ±o de la Queue).
- public Queue(int capacity) {
- this.container =(E[]) new Object[capacity];
- this.head = 0;
- this.tail = 0;
- this.count = 0;
- }
- //Metodo para saber si la Queue esta vacia.
- public boolean isEmpty() {return this.count <= 0;}
- //Metodo para saber si la Queue esta llena.
- public boolean isFull() {return this.count >= this.container.length;}
- //Metodo para saber si tail esta en la ultima posicion del Array.
- private int next(int pos) {
- ++pos;
- if(pos >= this.container.length)return pos = 0;
- return pos;
- }
- //Metodo para agregar un elemento a la Queue.
- //Si la Queue esta llena produce una excepcion.
- public boolean add(E element) {
- if(this.size() >= this.container.length) throw new IllegalStateException("Cola llena...");
- this.container[this.tail] = element;
- this.tail = this.next(this.tail);
- ++this.count;
- return true;
- }
- //Metodo para agregar un elemento a la Queue.
- //Si la Queue esta llena retorna false.
- public boolean offer(E element) {
- if(this.size() >= this.container.length) return false;
- this.container[this.tail] = element;
- this.tail = this.next(this.tail);
- ++this.count;
- return true;
- }
- //Metodo para quitar un elemento de la Queue.
- //Si la Queue esta vacia produce una excepcion.
- public E remove() {
- if(this.size() <= 0) throw new IllegalStateException("Cola vacia...");
- E element = this.container[this.head];
- this.head = this.next(this.head);
- --this.count;
- return element;
- }
- //Metodo para quitar un elemento de la Queue.
- //Si la Queue esta vacia retorna null.
- public E poll() {
- if(this.size() <= 0) return null;
- E element = this.container[this.head];
- this.head = this.next(this.head);
- --this.count;
- return element;
- }
- //Metodo para saber cual es el proximo elemento a salir de la Queue.
- //Si la Queue esta vacia produce una excepcion.
- public E element() {
- if(this.size() >= this.container.length) throw new IllegalStateException("Cola vacia...");
- return this.container[this.head];
- }
- //Metodo para saber cual es el proximo elemento a salir de la Queue.
- //Si la Queue esta vacia retorna null.
- public E peek() {
- if(this.size() >= this.container.length) return null;
- return this.container[this.head];
- }
- //Metodo que retorna la cantidad de elementos que hay en la pila.
- public int size(){return this.count;}
- public static Queue<Object> union(Queue<?> queue1, Queue<?> queue2) {
- Queue<Object> result = new Queue<>(queue1.size() + queue2.size());
- for(int pos = queue1.head, cta = queue1.size(); cta > 0; pos = queue1.next(pos), --cta) {
- result.offer(queue1.container[pos]);
- }
- for(int pos = queue2.head, cta = queue2.size(); cta > 0; pos = queue2.next(pos), --cta) {
- result.offer(queue2.container[pos]);
- }
- return result;
- }
- public Queue<Object> union(Queue<?> queue2) {
- return Queue.union(this, queue2);
- }
- public Object[] toArray() {
- Object[] result = new Object[this.count];
- for(int i = 0, pos = this.head, cta = this.size(); cta > 0; ++i, pos = this.next(pos), --cta) {
- result[i] = this.container[pos];
- }
- return result;
- }
- @Override
- public String toString(){
- if(this.size() <= 0)return " ";
- StringBuilder sb = new StringBuilder();
- sb.append("[" + this.container[this.head].toString());
- for (int cta = 1, pos = this.next(this.head); cta < this.size(); ++cta, pos = this.next(pos)) {
- sb.append(", " + this.container[pos].toString());
- }
- sb.append("]");
- return sb.toString();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment