je veux faire fusion de deux liste simplement chaine

a condition que la liste 1 est trier coissant

de meme pour la liste 2




j'ai base sur le principe de la fusion pour le tableau

mais ca ne marche pas


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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
 
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
typedef struct noeud
{
int info;
struct noeud *suivant;
}noeud;
 
typedef struct
{
noeud *tete;
}list;
 
 
void init(list *l)
{
l->tete=NULL;
}
 
 
void inserer_fin(list *l,int x)
{
noeud *e;
e=(noeud*)malloc(sizeof(noeud));
noeud *parcour=l->tete;
e->info=x;
e->suivant=NULL;
if(l->tete==NULL)
l->tete=e;
else
{
while(parcour->suivant!=NULL)
{
parcour=parcour->suivant;
}
parcour->suivant=e;
}
}
 
 
 
void affiche(list l)
{
noeud *parcour=l.tete;
while(parcour!=NULL)
{
printf("%7d",parcour->info);
parcour=parcour->suivant;
}
}
 
 
 
 
void fusioner(list *l1,list *l2,list *l3)       // le probleme 
{
noeud *parcour1=l1->tete;
noeud *parcour2=l2->tete;
noeud *parcour3=l3->tete;
while((parcour1!=NULL)&&(parcour2!=NULL))
{
if(parcour1->info<parcour2->info)
 {
  parcour3->info=parcour1->info;
  parcour3=parcour3->suivant;
  parcour1=parcour1->suivant;
  }
  else
  {parcour3->info=parcour2->info;
     parcour3=parcour3->suivant;
  parcour2=parcour2->suivant;
  }
}
while(parcour1!=NULL)
{
 parcour3->info=parcour1->info;
  parcour3=parcour3->suivant;
  parcour1=parcour1->suivant;
 }
while(parcour2!=NULL)
{
 parcour3->info=parcour2->info;
     parcour3=parcour3->suivant;
  parcour2=parcour2->suivant;
 }
}
 
 
void main()
{
int v,n,i,n1,v1;
list l1,l2,l3;
init(&l1);
init(&l2);
init(&l3);
printf("                            donner la premiere liste\n :");
printf(" donner les nombres de noeud :");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("donner la valeur :");
scanf("%d",&v);
inserer_fin(&l1,v);
 
}
printf("                            donner la deuxieme liste\n :");
printf(" donner les nombres de noeud :");
scanf("%d",&n1);
for(i=0;i<n1;i++)
{
printf("donner la valeur :");
scanf("%d",&v1);
inserer_fin(&l2,v1);
}
fusioner(&l1,&l2,&l3);
affiche(l3);
}


pouvez m'aidez