/** le constructeur utilise la classe Random. **/ import java.util.*; /** L'interface Data est une liste d'objets de classe Cellule. **/ public class Liste implements Data { Cellule tete; Cellule queue; private static Random alea = new Random(); private static int borne = 5; private static int modulo = 100; /** Le constructeur initialise la liste * avec une longueur aléatoire * en passant au constructeur de cellules des valeurs aléatoires **/ public Liste() { tete = new Cellule(); queue = new Cellule(); queue.link(tete,null); tete.link(null,queue); for(int i = 0; i < ((alea.nextInt() % borne) + borne); i++) { Cellule tmp = new Cellule(alea.nextInt() % modulo); tmp.link(tete,tete.suivant); } } /** La methode celluleMaximale retourne * la cellule qui contient le plus grand entier de la liste. **/ private Cellule celluleMaximale() { Cellule res = tete.suivant; Cellule tmp = tete.suivant; while (tmp != queue) { if (tmp.superieure(res)) res = tmp; else; tmp = tmp.suivant; } return res; } /** La méthode toString envoie sur la sortie standard * les entiers de la liste entre deux parentheses. **/ public String toString() { String res = "("; Cellule tmp = tete.suivant; while (tmp != queue) { res = res + " " + tmp ; tmp = tmp.suivant; } res = res + " )"; return res; } /** La méthode superieure retourne * vrai si l'element maximal de la liste referencee est * strictement superieur à * l'element maximal de la liste passée en parametre. **/ public boolean superieure(Data data) { Liste b = (Liste) data; return celluleMaximale().superieure(b.celluleMaximale()); } }