Princeton1/module8/src/main/java/com/hithomelabs/princeton1/module8/PriorityQueue.java
Kruti Shah 38de5fe0a5
All checks were successful
sample gradle build and test / build (push) Successful in 1m0s
priority queue implementation added (#20)
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>
2025-02-19 21:55:20 +00:00

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++];
}
};
}
}