Advertisement
Guest User

Untitled

a guest
Jun 25th, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.18 KB | None | 0 0
  1. public class ArrayQueue<T> implements QueueADT<T>, Serializable {
  2.  
  3.     public static final int DEFAULT_CAPACITY = 100;
  4.     private int front;
  5.     private int count;
  6.     private T[] queue;
  7.    
  8.     public ArrayQueue() {
  9.         this(DEFAULT_CAPACITY);
  10.     }
  11.    
  12.     public ArrayQueue(int initialCapacity) {
  13.         queue = (T[])new Object[initialCapacity];
  14.         front = 0;
  15.         count = 0;
  16.     }
  17.    
  18.     public void enqueue(T element) throws IllegalArgumentException {
  19.         if (element == null) {
  20.             throw new IllegalArgumentException("Null values are npt accepted");
  21.         }
  22.         else if (count >= queue.length) {
  23.             expandCapacity();
  24.             this.enqueue(element);
  25.         }
  26.         else {
  27.             queue[(front + count) % queue.length] = element;
  28.             count++;
  29.         }
  30.     }
  31.  
  32.     public T dequeue() throws IllegalStateException {
  33.         if (this.isEmpty()) {
  34.             throw new IllegalStateException("Element cannot be dequeued! The queue is empty!");
  35.         }
  36.         T element = queue[front];
  37.         queue[front++] = null;
  38.         count--;
  39.         return element;
  40.     }
  41.  
  42.     public T first() throws IllegalStateException{
  43.         if (this.isEmpty()) {
  44.             throw new IllegalStateException("There is no first element! The queue is empty!");
  45.         }
  46.         return queue[front];
  47.     }
  48.  
  49.     public int indexOf(T element) {
  50.         int dequeues = 0;
  51.         for (int i = front; i < this.queue.length; i++) {
  52.             if (queue[i] != null && queue[i].equals(element)) {
  53.                 return dequeues;
  54.             }
  55.             dequeues++;
  56.         }
  57.         for (int i = 0; i < front; i++) {
  58.             if (queue[i] != null && queue[i].equals(element)) {
  59.                 return dequeues;
  60.             }
  61.             dequeues++;
  62.         }
  63.         return -1;
  64.     }
  65.  
  66.     public boolean isEmpty() {
  67.         if (this.size() == 0) return true;
  68.         return false;
  69.     }
  70.  
  71.     public int size() {
  72.         return count;
  73.     }
  74.    
  75.     public String toString() {
  76.         String result = "";
  77.         for (int i = front; i < queue.length; i++) {
  78.             if (i != front && queue[i] != null) {
  79.                 result += ", " + queue[i];
  80.             } else if (queue[i] != null){
  81.                 result += queue[i];
  82.             }
  83.         }
  84.         return String.format("{%s}", result);
  85.     }
  86.    
  87.     public void expandCapacity() {
  88.         T[] newQueue = (T[])(new Object[queue.length * 2]);
  89.        
  90.         for (int i = 0; i < queue.length; i++) {
  91.             newQueue[i] = queue[i];
  92.         }
  93.    
  94.         this.queue = newQueue;
  95.     }
  96.  
  97.     public T[] getQueue() {
  98.         return this.queue;
  99.     }
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement