/** * Fichier Liste1.java * * Démonstration d'utilisation de la classe java.util.LinkedList * * (Voir l'ex�cution et LinkedList.doc pour comprendre et * pour les explications suppl�mentaires) * * Pr�par� par LVN pour IFT 1170 * */ import java.util.*; public class Liste1 { /* cr�er la liste lin�aire des diviseurs (Integer) d'un nombre dans l'ordre LIFO (Last In First Out) */ static LinkedList<Integer> creerListe(int nombre) { LinkedList<Integer> uneListe = new LinkedList<Integer>(); // liste VIDE au d�but for (int candi = 1 ; candi <= nombre ; candi++) if (nombre % candi == 0) uneListe.addFirst( candi ); return uneListe; } // une mani�re de parcourir une liste lin�aire: static void afficher(LinkedList<Integer> liste, String message) { System.out.printf("\nContenu %s\n", message); for (int i = 0 ; i < liste.size() ; i++) System.out.printf("%2d) %8d\n", i+1, liste.get(i)); System.out.println(); } // une autre mani�re de parcourir une liste lin�aire dans 2 sens static void afficher(String message, LinkedList<Integer> liste, int ordre) { System.out.printf("\nContenu %s\n" , message); int rang = 0; if(ordre == 1){ System.out.println("Du d�but � la fin"); ListIterator versAvant = liste.listIterator(); while(versAvant.hasNext()) System.out.printf("%d %8d\n", ++rang,versAvant.next()); } else { System.out.println("En ordre inverse"); ListIterator inverse = liste.listIterator(liste.size()); while(inverse.hasPrevious()) System.out.printf("%d %8d\n", ++rang, inverse.previous()); } System.out.println(); } // d�mo de qq m�thodes fr�quemment utilis�es pour g�rer une liste static void demo(LinkedList<Integer> liste) { System.out.println("Contenu de la liste de " + liste.size() + " �l�ments :\n" + liste); System.out.println("\nPremier �l�ment : " + liste.getFirst()); System.out.println("Dernier �l�ment : " + liste.getLast()); System.out.println("\nR�sultats de la recherche :\n"); System.out.println(" a) de 25 :\n"); System.out.println(" avec indexOf : " + liste.indexOf(25)); System.out.println(" avec lastIndexOf : " + liste.lastIndexOf(25)); System.out.println(" avec contains : " + liste.contains(25)); System.out.println(" b) de 1000 :\n"); System.out.println(" avec indexOf : " + liste.indexOf(1000)); System.out.println(" avec lastIndexOf : " + liste.lastIndexOf(1000)); System.out.println(" avec contains : " + liste.contains(1000)); liste.addFirst( 1234 ); liste.addLast ( 333 ); liste.add(1, 543); liste.set(5, 9999); System.out.println("Contenu de la liste de " + liste.size() + " �l�ments (apres ces 3 ajouts et 1 modification):\n" + liste); System.out.println("\nDeuxi�me �l�ment de la liste : " + liste.get(1)); System.out.println("\nSixi�me �l�ment de la liste : " + liste.get(5)); System.out.println("On supprime le dernier �l�ment : " + liste.remove(liste.size() - 1)); System.out.println("On supprime l'�l�ment � l'indice 3 : " +liste.remove(3)); System.out.println("On supprime l'�l�ment : " + liste.removeFirst()); System.out.println("On supprime l'�l�ment : " + liste.removeLast()); System.out.println("On supprime l'�l�ment ??? " + liste.remove( new Integer("10"))); System.out.println("Contenu de la liste (avec toString) de " + liste.size() + " elements :\n" + liste); afficher(liste," (avec une mani�re de parcourir la liste) :"); afficher(" (avec une autre mani�re de parcourir la liste) :", liste, 1); afficher(" (avec une autre mani�re de parcourir la liste) :", liste, 2); System.out.printf("\nValeur la plus petite : %d\n", Collections.min(liste)); System.out.printf("Valeur la plus grande : %d\n\n", Collections.max(liste)); Collections.sort(liste); System.out.println("Cette liste triee : " + liste); int k = Collections.binarySearch(liste, 4 ); System.out.printf("Indice dans la recherche de 4 : %d\n", k); // cas o� on cherche une valeur inexistence k = Collections.binarySearch(liste, 125 ); System.out.printf("Indice dans la recherche de 125 : %d\n", k); // ins�rer 125 � la bonne place afin que liste reste tri�e liste.add( -k-1, 125); System.out.println("Cette liste reste triee : " + liste); } public static void main (String[] args) { LinkedList<Integer> liste = creerListe(100); demo(liste); } } /* Ex�cution: --------------------Configuration: <Default>-------------------- Contenu de la liste de 9 �l�ments : [100, 50, 25, 20, 10, 5, 4, 2, 1] Premier �l�ment : 100 Dernier �l�ment : 1 R�sultats de la recherche : a) de 25 : avec indexOf : 2 avec lastIndexOf : 2 avec contains : true b) de 1000 : avec indexOf : -1 avec lastIndexOf : -1 avec contains : false Contenu de la liste de 12 �l�ments (apres ces 3 ajouts et 1 modification): [1234, 543, 100, 50, 25, 9999, 10, 5, 4, 2, 1, 333] Deuxi�me �l�ment de la liste : 543 Sixi�me �l�ment de la liste : 9999 On supprime le dernier �l�ment : 333 On supprime l'�l�ment � l'indice 3 : 50 On supprime l'�l�ment : 1234 On supprime l'�l�ment : 1 On supprime l'�l�ment ??? true Contenu de la liste (avec toString) de 7 elements : [543, 100, 25, 9999, 5, 4, 2] Contenu (avec une mani�re de parcourir la liste) : 1) 543 2) 100 3) 25 4) 9999 5) 5 6) 4 7) 2 Contenu (avec une autre mani�re de parcourir la liste) : Du d�but � la fin 1 543 2 100 3 25 4 9999 5 5 6 4 7 2 Contenu (avec une autre mani�re de parcourir la liste) : En ordre inverse 1 2 2 4 3 5 4 9999 5 25 6 100 7 543 Valeur la plus petite : 2 Valeur la plus grande : 9999 Cette liste triee : [2, 4, 5, 25, 100, 543, 9999] Indice dans la recherche de 4 : 1 Indice dans la recherche de 125 : -6 Cette liste reste triee : [2, 4, 5, 25, 100, 125, 543, 9999] Process completed. */
We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy. Accept Learn more