Liste chaineé

jaych Messages postés 6 Statut Membre -  
jaych Messages postés 6 Statut Membre -
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. Dalfab Messages postés 638 Date d'inscription   Statut Membre Dernière intervention   102
     
    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. jaych Messages postés 6 Statut Membre
       
      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
      1. Dalfab Messages postés 638 Date d'inscription   Statut Membre Dernière intervention   102 > jaych Messages postés 6 Statut Membre
         
        Ce 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
      2. jaych Messages postés 6 Statut Membre > Dalfab Messages postés 638 Date d'inscription   Statut Membre Dernière intervention  
         
        Ceci 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
  2. jaych Messages postés 6 Statut Membre
     




    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