bonjour,
l'algorithme suivant fait la fusion de deux liste chainé(l1 et l2);
le probleme est dans la procedure fusionner,
en faite cet procedure fusion les deux listes,mais le résultat est stocké a fure et a mesure dans la liste l2 (j'ai deja la solution de fusionner les deux listes sur une 3eme liste,mais je veut économiser de l'espace memoire)
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
  typedef struct maillon *ptr;
       struct maillon { 
                      int val;
                      ptr lien;};
       typedef maillon listechaine;
       listechaine l1,l2;            
void fusionner(struct maillon l1,struct maillon *l2)
{    
        ptr pp1,pp2,pp3,pp;pp=l1.lien;
    pp1=l1.lien;  
    pp2=(*l2).lien;  
    pp3=&(*l2);
    while((pp!=NULL)&&(pp2!=NULL))
    {
    if((*pp2).val<=(*pp).val)
    {
 
        pp2=(*pp2).lien;
        pp3=(*pp3).lien;
    }
    else{
        pp=(*pp1).lien;
        (*pp3).lien=pp1;
        pp=(*pp).lien;
 
    }     
    }
      if(pp1!=NULL
      (*pp2).lien=pp1;
 
}
si vous avez pas compris quelque chose n'esitez pas a me le dire.
merci pour votre attention.