/* fichier list1.cpp (premier exemple des listes : conteneur list) But de ce programme : démontrer quelques fonctions traitant les listes */ #include #include #include #include #include using namespace std; void continuer() { cout << endl << endl << "Appuyez sur une lettre suivie de Entree " ; char lettre; cin >> lettre ; cout << endl << endl; } /* afficher le contenu d'une liste utilisant des itérateurs */ void afficher(list liste, string message) { if ( liste.size() == 0 ) cout << message << " est vide\n"; else { cout << "Contenu de " << message << ":\n"; for ( list::iterator il = liste.begin(); il != liste.end(); il++) cout << *il << endl; cout << endl; // première et dernière valeur de la liste cout << "Premier element : " << liste.front() << endl; cout << "Dernier element : " << liste.back() << endl; } } void demo1() { cout << "\n\nDemo 1:\n\n"; list liste1; // liste VIDE au début afficher(liste1, "liste1 au debut"); // ajouter des multiples de 5 entre 1 et 50 a la fin de la liste for (int k = 1 ; k <= 50 ; k++) if (k % 5 == 0) liste1.push_back(k); afficher(liste1, "liste1 avec des multiples de 5 entre 1 et 50"); list::iterator zz = liste1.end(); zz--; cout << " ****************** " << * zz << " *********** \n"; // modifier la valeur du 1er élément liste1.front() += 70; // modifier la valeur du dernier élément liste1.back() /= 2; afficher(liste1, "liste1 modifiee"); // supprimer tous les 25 de la liste liste1.remove(25); afficher(liste1, "liste1 apres avoir supprime TOUS les 25"); // trier (sort) la liste liste1.sort(); afficher(liste1, "liste1 apres le tri"); // supprimer le début et la fin de la liste: liste1.pop_front(); liste1.pop_back(); afficher(liste1, "liste1 apres avoir retire le 1er et le dernier"); // ajouter au début et à la fin de la liste liste1.push_front(30); liste1.push_front(45); liste1.push_back (15); liste1.push_back (50); liste1.push_back (30); afficher(liste1, "liste1 apres avoir ajoute quelques val. au debut et a la fin"); list::iterator il = min_element(liste1.begin(), liste1.end()); cout << "valeur minimale : " << *il << endl; il = max_element(liste1.begin(), liste1.end()); cout << "valeur maximale : " << *il << endl; liste1.sort(); afficher(liste1,"liste1 apres encore trie"); // enlever des valeurs répétées liste1.unique(); afficher(liste1, "liste1 apres avoir enleve des val. doubles"); } // une manière pour créer une liste à partir d'un tableau void creer(list & liste, int tableau[], int nbElem) { for (int i = 0 ; i < nbElem; i++) liste.insert(liste.end(), tableau[i]); } void demo2() { cout << "\n\nDemo 2:\n\n"; int age1[] = { 23, 15, 20, 18, 22, 40, 18, 32 }, age2[] = { 15, 41, 22, 18, 26 }; int nb1Pers = sizeof(age1) / sizeof(int), nb2Pers = sizeof(age2) / sizeof(int); list liste1, liste2; creer(liste1, age1, nb1Pers); creer(liste2, age2, nb2Pers); afficher(liste1, "liste 1 apres la creation"); afficher(liste2, "liste 2 apres la creation"); liste1.sort(); liste2.sort(); // fusion de 2 listes liste1.merge(liste2); afficher(liste1, "liste 1 apres la fusion avec liste 2"); } int main() { demo1(); demo2(); continuer(); return 0; } /* Exécution: Demo 1: liste1 au debut est vide Contenu de liste1 avec des multiples de 5 entre 1 et 50: 5 10 15 20 25 30 35 40 45 50 Premier element : 5 Dernier element : 50 ****************** 50 *********** Contenu de liste1 modifiee: 75 10 15 20 25 30 35 40 45 25 Premier element : 75 Dernier element : 25 Contenu de liste1 apres avoir supprime TOUS les 25: 75 10 15 20 30 35 40 45 Premier element : 75 Dernier element : 45 Contenu de liste1 apres le tri: 10 15 20 30 35 40 45 75 Premier element : 10 Dernier element : 75 Contenu de liste1 apres avoir retire le 1er et le dernier: 15 20 30 35 40 45 Premier element : 15 Dernier element : 45 Contenu de liste1 apres avoir ajoute quelques val. au debut et a la fin: 45 30 15 20 30 35 40 45 15 50 30 Premier element : 45 Dernier element : 30 Contenu de liste1 apres encore trie: 15 15 20 30 30 30 35 40 45 45 50 Premier element : 15 Dernier element : 50 Contenu de liste1 apres avoir enleve des val. doubles: 15 20 30 35 40 45 50 Premier element : 15 Dernier element : 50 Demo 2: Contenu de liste 1 apres la creation: 23 15 20 18 22 40 18 32 Premier element : 23 Dernier element : 32 Contenu de liste 2 apres la creation: 15 41 22 18 26 Premier element : 15 Dernier element : 26 Contenu de liste 1 apres la fusion avec liste 2: 15 15 18 18 18 20 22 22 23 26 32 40 41 Premier element : 15 Dernier element : 41 Appuyez sur une lettre suivie de Entree */