Des réponses aux questions :Question n°1 initialiser et ecrire la liste
Question n°2 trier la liste par sélection
Question n°3 insérer un élément dans la liste triée
Classe complète répondant à l'énoncé.
Question n°1:Le sous programme Java implantant la méthode "initialiser" construisant la liste :
Le sous programme Java implantant la méthode "ecrire" affichant le contenu de la liste :
Remonter
Question n°2:La méthode "triSelect" utilisant l'algorithme de tri par sélection afin de ranger les noms par ordre alphabétique croissant :
Remarques :
- table[i] de l'algorithme (accès au ième élément) est implanté en Vector par L.get(i).
- Comme la méthode "Object get(int index)" renvoie un Object nous transtypons L.get(i) en type String qui est un descendant d'Object, grâce à la méthode de classe valueOf de la classe String "static String valueOf(Object obj)", ce qui s'écrit ici : String.valueOf(L.get(i)).
- Enfin pour comparer deux String ( table[i] < table[m] )on utilise la méthode compareTo de la classe String : String.valueOf(L.get(j)).compareTo(String.valueOf(L.get(m))) < 0.
Question n°3:La méthode "inserElem" utilisant l'algorithme d'insertion d'un élément dans une liste triée :
Remarques :
Voici les traductions utilisées pour implanter l'algorithme d'insertion :
Algorithme Java Vector et String la liste L est vide L.isEmpty( ) ousinon (ou optimisé) || dernierElement de la liste L L.lastElement( ) . Transtypé en String par :
String.valueOf(L.lastElement( ))dernierElement de la liste L £ Elt String.valueOf(L.lastElement( )).compareTo(Elt) <= 0 ajouter Elt en fin de liste L L.add(Elt) taille(L) L.size( ) Element de rang i de L String.valueOf(L.get(i)) Elt £ Element de rang i de L String.valueOf(L.get(i)).compareTo(Elt) >= 0 insérer Elt à cette position L.insertElementAt(Elt , i) sortir break
Une classe complète permettant les exécutions demandées :
import java.util.Vector; // nécessaire à l'utilisation des Vector class ApplicationListeSimple {
static void triSelect (Vector L ) {
// sous-programme de Tri par sélection de la liste
int n = L.size()-1;
for ( int i = 0; i <= n-1; i++)
{ // recommence une sous-suite
int m = i; // i est l'indice de l'élément frontière ai = table[ i ]
for ( int j = i+1; j <= n; j++) // (ai+1, a2, ... , an)
if ( String.valueOf(L.get(j)).compareTo(String.valueOf(L.get(m))) < 0 )
m = j ; // indice mémorisé
String temp = String.valueOf(L.get(m)); // int temp = table[ m ];
L.set(m, L.get(i)); //table[ m ] = table[ i ];
L.set(i, temp); //table[ i ]= temp;
}
}
static void inserElem (Vector L, String Elt ) {
if((L.isEmpty()) || (String.valueOf(L.lastElement()).compareTo(Elt) <= 0))
L.add(Elt);
else
for(int i=0; i <= L.size()-1; i++){
if (String.valueOf(L.get(i)).compareTo(Elt) >= 0){
L.insertElementAt(Elt , i);
break;
}
}
}
static void ecrire(Vector L) {
for(int i=0; i<L.size(); i++) {
System.out.print(L.get(i)+", ");
}
System.out.println("\nTaille de la liste chaînée = "+L.size());
}
static void initialiser(Vector L) {
L.add("voiture" );
L.add("terrien" );
L.add("eau" );
L.add("pied" );
L.add("traineau" );
L.add("avion" );
L.add("source" );
L.add("terre" );
L.add("xylophone" );
L.add("mer" );
L.add("train" );
L.add("marteau" );
}
static void main(String[] Args) {
Vector Liste = new Vector( ); //création obligatoire d'un objet de classe Vector
//---> contenu de la Liste - initialisation :
initialiser(Liste);
ecrire(Liste);//---> Tri de la liste :
System.out.println("\nListe une fois triée : ");
triSelect(Liste);
ecrire(Liste);//---> Insérer un élément dans la liste triée :
String StrInserer ="trainard";
System.out.println("\nInsertion dans la liste de : "+StrInserer);
inserElem(Liste, StrInserer);
ecrire(Liste);//---> Contenu de la Liste - boolean remove(Object x) :
System.out.println("\nListe.remove('pied') : ");
Liste.remove("pied");
ecrire(Liste);
}
}
Exécution de cette classe : voiture, terrien, eau, pied, traineau, avion, source, terre, xylophone, mer, train, marteau,
Taille de la liste chaînée = 12Liste une fois triée :
avion, eau, marteau, mer, pied, source, terre, terrien, train, traineau, voiture, xylophone,
Taille de la liste chaînée = 12Insertion dans la liste de : trainard
avion, eau, marteau, mer, pied, source, terre, terrien, train, trainard, traineau, voiture, xylophone,
Taille de la liste chaînée = 13Liste.remove('pied') :
avion, eau, marteau, mer, source, terre, terrien, train, trainard, traineau, voiture, xylophone,
Taille de la liste chaînée = 12
Source recopiable (cliquez sur le lien)
Remonter Image en diagrammes structurés JGrasp-Like du programme
informations sur les diagrammes