All checks were successful
sample gradle build and test / build (push) Successful in 1m0s
Reviewed-on: #20 Reviewed-by: hitanshu <hitanshu98@gmail.com> Co-authored-by: Kruti Shah <krutis0201@gmail.com> Co-committed-by: Kruti Shah <krutis0201@gmail.com>
67 lines
1.4 KiB
Java
67 lines
1.4 KiB
Java
package com.hithomelabs.princeton1.module8;
|
|
|
|
import com.hithomelabs.princeton1.module4.Queue;
|
|
import com.hithomelabs.princeton1.module5.ComparableHelper;
|
|
|
|
import java.util.Iterator;
|
|
|
|
public class PriorityQueue<E> extends Queue<E> implements ComparableHelper {
|
|
private int size;
|
|
private E[] arr;
|
|
private static final int CAPACITY = 100;
|
|
private int capacity;
|
|
|
|
public PriorityQueue(){
|
|
this(CAPACITY);
|
|
}
|
|
|
|
public PriorityQueue(int capacity){
|
|
arr = (E[]) new Object[capacity+1];
|
|
this.capacity = capacity;
|
|
}
|
|
|
|
@Override
|
|
public boolean isEmpty() {
|
|
return size == 0;
|
|
}
|
|
|
|
@Override
|
|
public E dequeue() {
|
|
if(isEmpty())
|
|
return null;
|
|
E value = arr[1];
|
|
ComparableHelper.exch(arr, 1, size);
|
|
arr[size--] = null;
|
|
Heap.sink(arr, 1, size, null, null);
|
|
return value;
|
|
}
|
|
|
|
@Override
|
|
public void enqueue(E element) {
|
|
arr[++size] = element;
|
|
Heap.swim(arr, size, size, null, null);
|
|
}
|
|
|
|
@Override
|
|
public int size() {
|
|
return size;
|
|
}
|
|
|
|
@Override
|
|
public Iterator iterator() {
|
|
return new Iterator() {
|
|
|
|
int index = 1;
|
|
@Override
|
|
public boolean hasNext() {
|
|
return index <= size;
|
|
}
|
|
|
|
@Override
|
|
public Object next() {
|
|
return arr[index++];
|
|
}
|
|
};
|
|
}
|
|
}
|