Skip to content
Snippets Groups Projects
Select Git revision
  • c5c7887f7eab7bfedffcc5c5dd888d15bc7f1586
  • master default protected
2 results

BookException.java

Blame
  • 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;
        }
    
    
    }