Liste chaineé
jaych
Messages postés
6
Statut
Membre
-
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.
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
-
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 }-
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 ??
- 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 {puis écrire les fonctions de chaînage/création/libération (que tu trouveras peut-être dans un forum C)
... mes champs ...;
struct Noeud *pSuivant; // struct sert à rien sauf rappeler que tu n'es pas en vrai C++
};
En mettant ces fonctions en membre, cela sera du 'C avec les classes'
-
-


