Bonsoir à tous.
J'ai un petit pépin dans pour finaliser un de mes projets. Vous pourriez peut-être me donner un coup de pouce.
Je lis des donnés à partir d'un fichier texte puis je crée une liste chainée que j'utilise plus tard dans mon code. Dans chaque noeud, on retrouve la description d'un produit.
Je voudrais donc trier ma liste chainée ( à la création ou post-création) par ordre alphabetique de produit. Je ne dois pas utliser la libraire STL donc pas de sort(), tous doit etre fais manuellement. Voici mon noeud:
Et voici la fonction qui me permet d'inserer un nouveau noeud a la liste déja présente.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 struct Produit { int numProduit; char description [29]; float prix; int quantite; int qteVendue; Produit* suiv; };
Je dois donc comparer le champ "description" et inserer à la bonne position.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 //Insertion produits a la fin void InsertionProduit(DescListe &DL, Produit* n){ Produit* pt = DL.teteProd; if(DL.teteProd == NULL){//si Ma liste est vide DL.teteProd = n; }else{ //On rajoute a la fin while(pt->suiv != NULL) pt = pt->suiv; pt->suiv = n; } }
Trier à la l'insertion me parait l'option la plus propre. Donc si je ne fais pas fausse route, il faudra gérer 4 cas:
- Liste vide
- Inserer à la place de la tete
- Inserer en plein mileu
- Inserer à la fin
Merci pour votre aide.
Partager