1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
import ca.uqam.inf2120.tp2.adt.FileAttenteTda;
import ca.uqam.inf2120.tp2.adt.OrdonnableParPrioriteEtDateHeure;
public class FileAttenteChaineeImpl<T extends OrdonnableParPrioriteEtDateHeure>
implements FileAttenteTda<T>{
private Noeud<T> debut=null;
private Noeud<T> fin=null;
private int taille=0;
FileAttenteChaineeImpl<T> file;
//constructeur vide sans parametre
public FileAttenteChaineeImpl(){
}
/*
* redefinition de la methode iterator();cette methode retourne un objet iterator
* <T> a travers lequel on peut parcourir notre file d'attente pour appliquer
* des traitements specifiques sur les membres qu'elle contient
*
* */
@Override
public Iterator<T> iterator() {
return new FileAttenteImplIterator();
}
// Classe interne privÈe pour l'implantation de l'itÈrateur
private class FileAttenteImplIterator implements Iterator<T> {
private Noeud<T> courant=null;
public FileAttenteImplIterator() {
courant=debut;
}
@Override
public boolean hasNext() {
return courant!=null;
}
@Override
public T next() {
System.out.println("allo");
if ( courant==null ) throw new NoSuchElementException();
T element = courant.getElement();
courant = courant.getSuivant();
return element;
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
}
/**
* Place l'ÈlÈment "elt" dans la file selon sa prioritÈ. Les ÈlÈments de la
* plus grande prioritÈ sont placÈs au dÈbut de la file. Si "elt" a la mÍme
* prioritÈ qu'un autre ÈlÈment qui existe dÈj dans la file, il doit Ítre
* placÈ avant cet ÈlÈment si sa date / heure de crÈation est plus ancienne
* que ce dernier, sinon il est placÈ aprËs. L'ÈlÈment ne doit pas Ítre placÈ
* dans la file si une des conditions suivantes est vraie :
* - L'ÈlÈment est null.
* - L'ÈlÈment existe dÈj dans la file (2 ÈlÈments identiques s'ils ont
* le mÍme identifiant).
* - La prioritÈ de l'ÈlÈment est infÈrieure 1.
*
* @param elt L'ÈlÈment ajouter
* @return true si "elt" est ajoutÈ, sinon false
*/
@Override
public boolean placer(T elt) {
//nouveau contenant l'element a placer dans la file
Noeud<T> nouveau = new Noeud<>( elt);
boolean placer =false;
// Parcourir pour trouver le noeud cible dans la liste
while (elt != null&& !placer && elt.obtenirPriorite()>1 )
{
placer=true;
if ( debut==null ) debut=new Noeud<T>(elt);
else{
// Création et initialisation du noeud temporaire
Noeud<T> courant = debut;
while(courant.getSuivant()!=null){
//je suis blocqué ici j'aimerai comparé la priorité de mon element a inseré
//avec celle de l'element courant
if( elt.obtenirPriorite().equals(elt.obtenirPriorite().getSuivant)
//s'il ont la meme priorité je compare avec date de creation
if(elt.obtenirDateHeureCreation().before( file.get(i).obtenirDateHeureCreation())){
}
} |
Partager