import java.util.ArrayList; /*On considere ici un tableau ou une liste indice(e) a partir de 0. On appelle pere de la "case" qui se trouve a l'indice i (ici appele noeud i) le noeud (i -1 )/2 (si i > 0). On appelle fils d'un noeud i les noeuds 2 * i + 1 et 2 * i + 2 . On remarque que le fils d'un noeud i a pour pere i. On dit qu'un tableau ou une liste est un tas si l'objet contenu dans le noeud i est toujours plus grand que les objet contenus dans les noeuds fils (si ceux-ci existent). Dans un tas, le plus grand objet se trouve a la racine, c'est-a-dire dans le noeud 0. Il s'agit ici de gerer une liste qui se comporte comme un tas.*/ public class Tas extends ArrayList { public void ajouter(E obj) { /*Il s'agit ici d'ajouter un objet dans une liste structuee en tas en conservant la structure de tas. Pour cela, on met le nouvel objet a la fin de la liste et on le fait remonter, en l'echangeant avec son pere, jusqu'a ce qu'il soit a la bonne place, c'est-a-dire plus petit que son pere. */ } public E retirer() { /*Cette methode retourne le plus grand objet du tas et retourne celui-ci. Pour cela, on copie l'objet a retirer, celui qui est le premier de la liste, on met alors le dernier de la liste a la place du premier et on le fait descendre de fils en fils, en l'echangeant avec le plus grand de ses deux fils, jusqu'a ce qu'il soit a sa place, c'est-a-dire plus grand que ses deux fils ou qu'il n'ait plus de fils. Il ne reste plus qu'a retourner l'objet qui etait a retirer.*/ return null; } public void afficher() { /*Il s'agit d'afficher la liste des objets du tas, dans l'ordre de la liste (et donc pas dans l'ordre d'un tri) */ } }