Array queue wraping
All checks were successful
sample gradle build and test / build (pull_request) Successful in 1m25s
All checks were successful
sample gradle build and test / build (pull_request) Successful in 1m25s
This commit is contained in:
parent
ca1391130d
commit
026b6c1d09
@ -7,12 +7,14 @@ import javax.annotation.Nonnull;
|
||||
public class ArrayQueue<E> extends Queue<E>{
|
||||
|
||||
private E[] queueArray = (E[]) new Object[1];
|
||||
private int startPtr = 0;
|
||||
private int endPtr = 0;
|
||||
private int startPtr;
|
||||
private int endPtr;
|
||||
private int size;
|
||||
private int queueArrayLength = queueArray.length;
|
||||
|
||||
@Override
|
||||
public boolean isEmpty() {
|
||||
return startPtr >= endPtr;
|
||||
return size == 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -20,25 +22,27 @@ public class ArrayQueue<E> extends Queue<E>{
|
||||
if(isEmpty()){
|
||||
return null;
|
||||
}
|
||||
E currentValue = queueArray[startPtr];
|
||||
queueArray[startPtr++] = null;
|
||||
if(size() < queueArray.length/4){
|
||||
changeArraySize(queueArray.length/2);
|
||||
E currentValue = queueArray[startPtr % queueArrayLength];
|
||||
queueArray[startPtr++ % queueArrayLength] = null;
|
||||
size--;
|
||||
if(size() < queueArrayLength/4){
|
||||
changeArraySize(queueArrayLength/2);
|
||||
}
|
||||
return currentValue;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enqueue(E element) {
|
||||
queueArray[endPtr++] = element;
|
||||
if(endPtr >= queueArray.length){
|
||||
changeArraySize(queueArray.length*2);
|
||||
queueArray[endPtr++ % queueArrayLength] = element;
|
||||
size++;
|
||||
if(size == queueArrayLength){
|
||||
changeArraySize(queueArrayLength*2);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int size() {
|
||||
return endPtr - startPtr;
|
||||
return size;
|
||||
}
|
||||
|
||||
private void changeArraySize(int targetSize){
|
||||
@ -50,6 +54,7 @@ public class ArrayQueue<E> extends Queue<E>{
|
||||
queueArray[j++]=tempArray[i];
|
||||
endPtr = size();
|
||||
startPtr = 0;
|
||||
queueArrayLength = queueArray.length;
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
|
Loading…
Reference in New Issue
Block a user