Les trois classes se succède:
abstract class TableauTrieAbstrait { TableauTrieAbstrait() { int capacite=10; int increment=3; table=new Object[capacite]; }
TableauTrieAbstrait(int capacite, int increment) { this.capacite=capacite; this.increment=increment; table=new Object[capacite]; } private int capacite; private int increment; private Object[] table; private int taille=0; //pour le nombre d'Object contenus dans table
abstract boolean plusGrand(Object obj1,Object obj2); // retourne true si obj1 est plus grand que obj2 //et false sinon
void inserer(Object element) { int i; if (taille==capacite) //on agrandit le tableau { capacite+=increment; Object[] grandTableau=new Object[capacite]; for (i=0;i<taille;i++)grandTableau[i]=table[i]; table=grandTableau; } i=taille-1; while ((i>=0) && (plusGrand(table[i],element))) { table[i+1]= table[i]; i--; } table[i+1]=element; taille++; }
void supprimer(Object element) { int i=0; while((i<taille)&&(!(element.equals(table[i])))) i++; if (i<taille) { while (i<taille-1) { table[i]=table[i+1]; i++; } taille--; if (taille==capacite-2*increment) //on diminue le tableau { capacite-=increment; Object[] petitTableau=new Object[capacite]; for (i=0;i<taille;i++)petitTableau[i]=table[i]; table=petitTableau; } } }
public String toString() { String chaine=""; for (int i=0;i<taille;i++) chaine+=table[i]+" "; chaine+="\n"; return chaine; } } ================================================ class TableauTrieEntiers extends TableauTrieAbstrait { TableauTrieEntiers(int capacite, int increment) { super(capacite,increment); }
public boolean plusGrand(Object i1, Object i2) { return ((Integer)i1).intValue()>((Integer)i2).intValue() ; } } ========================================================== import java.io.*;
class EssaiTriAbstrait { public static void main (String[] argv) { TableauTrieEntiers tableau = new TableauTrieEntiers(argv.length,1);
for(int i=0;i<argv.length;i++) try { tableau.inserer(new Integer(argv[i])); } catch (NumberFormatException exc) { System.out.println(argv[i]+" n'est pas entier"); } System.out.println(tableau); System.out.print("donnez un entier a supprimer : "); BufferedReader entree = new BufferedReader(new InputStreamReader(System.in)); String ligne=null; try { ligne=entree.readLine(); } catch(IOException exc){} try { tableau.supprimer(new Integer(ligne)); } catch (NumberFormatException exc) { System.out.println(ligne+" n'est pas entier"); } System.out.println(tableau); } }
|