Liste Simplement chainée (Insertion Ordre Decroissante)
Résolu
Yeah
-
Yeah -
Yeah -
Bonjour à tous.
Je voudrais créer une fonction qui ajoute un element dans un ordre décroissante, j'ai fait ça mais je pense qu'il est incorrecte ..
Je voudrais créer une fonction qui ajoute un element dans un ordre décroissante, j'ai fait ça mais je pense qu'il est incorrecte ..
typedef struct noeud{ int a; struct noeud *suivant; }nombre; nombre *premier; void Insertion_Ordre_Decr(int a){ nombre *p; p=(nombre *)malloc(sizeof(nombre)); p->a=a; if(premier==NULL){ p->suivant=premier; premier=p; } else{ nombre *pred; pred=premier; while((p->a)>(pred->a)) pred=pred->suivant; p->suivant=pred; pred=p; } }
A voir également:
- Liste Simplement chainée (Insertion Ordre Decroissante)
- Liste déroulante excel - Guide
- Excel trier par ordre croissant chiffre - Guide
- Liste déroulante en cascade - Guide
- Touche insertion clavier - Guide
- Insertion sommaire word - Guide
1 réponse
Salut,
ce n'est pas si mal ce que tu as écrit.
Seulement, c'est ton insertion qui ne va pas.
tu cherches à insérer "p" juste avant l'élément plus petit que lui. Or tu sors de ton while en pointant sur l'élément d'après, tu as donc perdu la référence à l'élément précédent.
Lors d'une insertion d'un élément dans une liste chainé, il faut faire deux raccordement : accrocher l'élément à la chaine, et accrocher la fin de la chaine au nouvel élément.
Dans ton cas, tu ne fais que la dernière étape, car une fois de plus tu as perdu le "lien" vers l'élément précédent. Il faut donc que tu sorte du while une itération plus tôt.
Note : pred est une variable temporaire, ta dernière ligne ne sert à rien.
Attention aux deux cas limites p->a est le plus grand et p->a est le plus petit.
La vrai soumission c'est quand les esclaves s'inquiètent du cours du coton.
Char Snipeur
ce n'est pas si mal ce que tu as écrit.
Seulement, c'est ton insertion qui ne va pas.
tu cherches à insérer "p" juste avant l'élément plus petit que lui. Or tu sors de ton while en pointant sur l'élément d'après, tu as donc perdu la référence à l'élément précédent.
Lors d'une insertion d'un élément dans une liste chainé, il faut faire deux raccordement : accrocher l'élément à la chaine, et accrocher la fin de la chaine au nouvel élément.
Dans ton cas, tu ne fais que la dernière étape, car une fois de plus tu as perdu le "lien" vers l'élément précédent. Il faut donc que tu sorte du while une itération plus tôt.
Note : pred est une variable temporaire, ta dernière ligne ne sert à rien.
Attention aux deux cas limites p->a est le plus grand et p->a est le plus petit.
La vrai soumission c'est quand les esclaves s'inquiètent du cours du coton.
Char Snipeur
Yeah
Mercii, j'ai compris mnt :)