Select Git revision
csrf_protection_controller.js
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
ArrayDoubleEndedQueue.java 2.60 KiB
package arraydoubleendedqueue;
import deque.DoubleEndedQueue;
import java.util.NoSuchElementException;
public class ArrayDoubleEndedQueue<E> implements DoubleEndedQueue {
private Object[] elements;
private int size;
private int capacity;
private int indexFirst;
public ArrayDoubleEndedQueue(int capacity) {
this.capacity = capacity;
elements = new Object[capacity];
this.size = 0;
this.indexFirst = 0;
}
@Override
public void addFirst(Object o) {
if(size == capacity) {
throw new IllegalStateException("La queue est pleine");
}
else {
elements[size] = o;
size++;
}
}
@Override
public void addLast(Object o) {
if(size == capacity) {
throw new IllegalStateException("La queue est pleine");
}
else {
elements[size] = o;
size++;
}
}
@Override
public Object removeFirst() {
if (size == 0) {
throw new NoSuchElementException("La queue est vide");
}
Object removedElement = (Object) elements[indexFirst];
elements[indexFirst] = null;
indexFirst = (indexFirst + 1) % capacity;
size--;
return removedElement;
}
@Override
public Object removeLast() {
if (size == 0) {
throw new NoSuchElementException("La queue est vide");
}
int lastIndex = (indexFirst + size - 1) % capacity;
Object removedElement = (Object) elements[lastIndex];
elements[lastIndex] = null;
size--;
return removedElement;
}
@Override
public Object getFirst() {
if (size == 0) {
throw new NoSuchElementException("La queue est vide");
}
return (Object) elements[indexFirst];
}
@Override
public Object getLast() {
if (size == 0) {
throw new NoSuchElementException("La queue est vide");
}
return (Object) elements[((indexFirst + size - 1) % capacity)];
}
@Override
public int size() {
return size;
}
@Override
public boolean contains(Object o) {
if (o == null) {
for (int i = 0; i < size; i++) {
if (elements[(indexFirst + i) % capacity] == null) {
return true;
}
}
} else {
for (int i = 0; i < size; i++) {
if (o.equals(elements[(indexFirst + i) % capacity])) {
return true;
}
}
}
return false;
}
}