probleme avec fusion de 2 llc trié element par element !
bon la j'ai rencontré un petit probleme et je sais pas ce que je doit faire je suis debutant en C
je veux faire la fusion de 2 llc trié dans une nouvelle llc en inserant element par element par ordre croissant
la structure
Code:
1 2 3 4 5 6
|
struct elem{
int val;
struct elem *suiv;
};
typedef struct elem *list; |
l'insertion
Code:
1 2 3 4 5 6 7 8 9
|
list insert_tete (list l,int v){
list p;
p=(list)malloc(sizeof(struct elem));
p->val=v;
p->suiv=l;
l=p;
return (l);
} |
la fonction de tri
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 28 29 30 31 32
|
list triFuzion(list a, list b){
list p=NULL, q=NULL, l=NULL, t=NULL;
p=a;
q=b;
l=t;
while ((p->suiv != NULL) && (q->suiv != NULL)){
if (p->val < q->val){
l = insert_tete(t,p->val);
p=p->suiv;
l=l->suiv;
}
else{
l = insert_tete(t,q->val);
q=q->suiv;
l=l->suiv;
}
}
while ((p->suiv = NULL) && (q->suiv != NULL)) {
l = insert_tete(t,q->val);
q=q->suiv;
l=l->suiv;
}
while ((p->suiv != NULL) && (q->suiv = NULL)) {
l = insert_tete(t,p->val);
p=p->suiv;
l=l->suiv;
}
return (t);
} |
quesque je doit amelioré ?