Liste chaineé

Bonjour,
Je fais un mini projet en c++ et je veux faire une lisite chaineé qui contient plusieures noeuds et chaque noeuds comporte 6 champs si quelqu'un peut donner le code comment on peut faire cette liste s'il vous plait et merci beaucoup.

2 réponses





  1. Ceci le problème que je traite avec un exemple s'il vous plait si vous pouvez m'aider à résoudre et merci beaucoup.
    0
    1. Bonjour,
      La liste chaînée s'appelle std::list en C++. On défini une structure avec deux champs et on pourra mettre des éléments de ce type dans la liste.
      #include <list>
      #include <string>
      #include <algorithm>
      #include <iostream>
      
      struct Noeud {
         std::string  chmp1;    // Un premier champ de type chaine
         int          chmp2;    // Un second champ de type entier
      };
      
      int main() {
         std::list<Noeud>  maListe;             // une liste de Noeud
         Noeud  unNoeud{ "ch1" , 1 };           // un Noeud
         
         maListe.push_back( unNoeud );          // ajout en fin de liste
         
         maListe.push_front( Noeud{"ch2",0} );  // ajout en début de liste
         
         // recherche dans la liste d'un element
         auto it = std::find( maListe.begin() , maListe.end() , 
                      [=]( Noeud const &n ) { return n.chmp1=="ch2" } );
         if ( it != maListe.end() )
            std::cout << "trouve " << it->chmp1 << " " << it->chmp2 << "\n";
         else std::cout << "n'a pas ete trouve\n";
         
         maListe.insert( it, Noeud{"ch3",27} );  // ajout apres endroit trouve
         
         // affichage de la liste en la parcourant
         for ( auto it = maListe.begin(); it != maListe.end(); ++it ) {
            std::cout << "noeud:" << it->chmp1 << " " << it->chmp2 << "\t";
         } // ecrira   noeud:ch2 0    noeud:ch3 27    noeud:ch1 1
      }
      0
      1. Mercii beaucoup, mais mon probleme est un peu different. Ma structure a plusieurs champs, et ma liste est reliee par des pointeurs, comment je peut réaliser ce probleme ??
        0
      2. @jaychCe que tu souhaites c'est ré-inventer la poudre, et en plus un chaînage par pointeur c'est du langage C, pas du C++.
        Commence par :
        struct Noeud { 
        ... mes champs ...;
        struct Noeud *pSuivant; // struct sert à rien sauf rappeler que tu n'es pas en vrai C++
        };
        puis écrire les fonctions de chaînage/création/libération (que tu trouveras peut-être dans un forum C)
        En mettant ces fonctions en membre, cela sera du 'C avec les classes'
        0
      3. @DalfabCeci le probleme avec un exemple ci-dessous que je traite s'il vous plait et si vous avez le temps vous pouvez m'aider a réaliser et merci beaucoup.
        0