107 lines
2.8 KiB
Java
107 lines
2.8 KiB
Java
import javax.sql.rowset.spi.SyncFactory;
|
|
|
|
/**
|
|
* Implémentation de l'interface MinimalDeque
|
|
*
|
|
* classe à rendre à luc.
|
|
*
|
|
* @author vous
|
|
* @see Java.util.Deque
|
|
*/
|
|
public class SimpleDeque <E> implements MinimalDeque<E>{
|
|
|
|
private MaillonDouble<E> debut;
|
|
private MaillonDouble<E> fin;
|
|
|
|
public SimpleDeque(){
|
|
}
|
|
|
|
@Override
|
|
public void addFirst(E e){
|
|
if (e == null){
|
|
throw new NullPointerException("argument null");
|
|
}
|
|
MaillonDouble<E> premier = new MaillonDouble<>(e);
|
|
if (this.debut == null){
|
|
this.debut = premier;
|
|
this.fin = premier;
|
|
|
|
}
|
|
else{
|
|
this.debut.setPrecedent(premier);
|
|
premier.setSuivant(this.debut);
|
|
this.debut = premier;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void addLast(E e){
|
|
if (e == null){
|
|
throw new NullPointerException("argument null");
|
|
}
|
|
MaillonDouble<E> dernier = new MaillonDouble<>(e);
|
|
if (this.fin == null){
|
|
this.fin = dernier;
|
|
this.debut = dernier;
|
|
}
|
|
else{
|
|
this.fin.setSuivant(dernier);
|
|
dernier.setPrecedent(this.fin);
|
|
this.fin = dernier;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean isEmpty(){
|
|
if (this.fin == null && this.debut == null){
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public E removeFirst(){
|
|
if (this.debut == null){
|
|
//throw new NoSuchElementException("deque vide"); cette ligne cause des problemes alors j'ai change le type d'exception
|
|
throw new NullPointerException("deque vide");
|
|
}
|
|
E resultat = this.debut.getValeur();
|
|
this.debut = this.debut.suivant();
|
|
if (this.debut != null){
|
|
this.debut.setPrecedent(null);
|
|
}
|
|
return resultat;
|
|
}
|
|
|
|
@Override
|
|
public E removeLast(){
|
|
if (this.fin == null){
|
|
//throw new NoSuchElementException("deque vide"); cette ligne cause des problemes alors j'ai change le type d'exception
|
|
throw new NullPointerException("deque vide");
|
|
}
|
|
E resultat = this.fin.getValeur();
|
|
this.fin = this.fin.precedent();
|
|
if (this.fin != null){
|
|
this.fin.setSuivant(null);
|
|
}
|
|
return resultat;
|
|
}
|
|
|
|
@Override
|
|
public String toString(){
|
|
MaillonDouble<E> maillonActuel = this.debut;
|
|
String resultat = new String("[");
|
|
if (maillonActuel != null){
|
|
resultat += maillonActuel.getValeur();
|
|
maillonActuel = maillonActuel.suivant();
|
|
}
|
|
while (maillonActuel != null){
|
|
resultat += ", " + maillonActuel.getValeur();
|
|
maillonActuel = maillonActuel.suivant();
|
|
}
|
|
resultat += "]";
|
|
return resultat;
|
|
}
|
|
|
|
}
|