@Override
    public Iterator<T> iterator() {
        return new Iterator<T>(){					// Classe anonyme LLIterator
        	private SLLNode<T> nextNode = head;
            private int nbLeft = size;

            @Override
            public boolean hasNext() {
                return nbLeft > 0;
            }

            @Override
            public T next() {
            	if(nbLeft > 0){
        	        T elem = nextNode.value;
        	        nextNode = nextNode.next;
        	        --nbLeft;
        	        return elem;
            	}
            	else
            		throw new NoSuchElementException("Fin de Liste");
            }
            
            public void remove(){
            	if(nbLeft == size)
            		throw new IllegalStateException("next() n'a pas été appelé!");
            	else{
            		nextNode.prev.prev.next = nextNode;
            		nextNode.prev = nextNode.prev.prev;
            		if(nbLeft+1 == size)
            			head = nextNode.prev;
            		size--;
            	}
            		
            }
        };
    }