Liste chaineé

Fermé
jaych Messages postés 5 Date d'inscription vendredi 28 avril 2017 Statut Membre Dernière intervention 1 mai 2017 - 28 avril 2017 à 15:59
jaych Messages postés 5 Date d'inscription vendredi 28 avril 2017 Statut Membre Dernière intervention 1 mai 2017 - 29 avril 2017 à 12:07
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

Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
29 avril 2017 à 06:06
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
jaych Messages postés 5 Date d'inscription vendredi 28 avril 2017 Statut Membre Dernière intervention 1 mai 2017
29 avril 2017 à 10:09
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
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101 > jaych Messages postés 5 Date d'inscription vendredi 28 avril 2017 Statut Membre Dernière intervention 1 mai 2017
29 avril 2017 à 10:57
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
jaych Messages postés 5 Date d'inscription vendredi 28 avril 2017 Statut Membre Dernière intervention 1 mai 2017 > Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023
Modifié le 29 avril 2017 à 12:14
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
jaych Messages postés 5 Date d'inscription vendredi 28 avril 2017 Statut Membre Dernière intervention 1 mai 2017
Modifié le 29 avril 2017 à 12:36





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