Recherche du précédent pour insertion dans liste chaînée triée
Bonjour,
Je veux écrire une insertion dans une liste chaînée.
Exemple : 2 - 3 - 5 . Je veux insérer le 4.
Donc je dois rechercher le précédent, càd le 3.
J'ai essayé, mais il se plante tout le temps.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| struct elem
{
int valeur ; struct elem *suivant ;
} ;
void RechPrecedent (struct elem *premier, int v, struct elem *prec)
{
struct elem *Q ;
char trouve ;
Q = premier ;
prec = NULL ;
trouve = 0 ;
while ((trouve == 0) && (Q != NULL))
{
if (Q->valeur > v)
{
trouve = 1 ;
}
else
{
prec = Q ;
Q = Q->suivant ;
}
}
} |
Après avoir créé mon nouvel élément...
Code:
P = (struct elem *) malloc(sizeof(struct elem)) ;
...j'appelle la fonction :
Code:
RechPrecedent(premier, v, prec) ;
Pourquoi est-ce que la fonction RechPrecedent ne me sort pas prec == NULL au début, puisqu'on ne rentre même pas dans la boucle (premier == Q == NULL) ?
(Et on nous a dit que travailler avec des variables globales serait trop sale...)