BUT2/DEV/DEV3.2/DEV32/2/SimpleDeque.java
2023-12-21 16:36:03 +01:00

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