salut j'ai un exercice et je n'arrive pas à l'exécuter correctement ,merci de m'aider !
il s'agit de:
on considère deux listes dont les adresses de tête et de queue sont mémorisées dans des variables T1,T2,Q1 et Q2.Écrivez les instructions qui concatènent ces deux listes,sans création de maillon.A la fin du travail T1 et Q1 pointeront sur la tête et la queue du résultat.
voilà non essai :
j'ai poster la totalité du code pour que vous pussiez l'exécuter chez vous .
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 #include<stdio.h> #include<conio.h> #include<stdlib.h> //exercice 2 la concéténation de deux listes //definition du structure element typedef struct element { int val; struct element *suivant; }maillon; typedef maillon* liste; /*1.ajout en tête d'une liste */ liste ajoutEnTete(liste l,int valeur) { liste nv=(liste)malloc(sizeof(maillon)); nv->val=valeur; if(l==NULL) { l=nv; nv->suivant=NULL; } else { nv->suivant=l; l=nv; } return l; } liste concat(liste T1,liste T2) { liste Q1=NULL; liste Q2=NULL; liste tmp=NULL; if(T1==NULL)//si la liste T1 était vide { if(T2==NULL)//si la liste T2 était vide donc on retrun NULL(une liste vide ) return NULL; else { T1=T2; tmp=T2; while(tmp->suivant!=NULL) { tmp=tmp->suivant; } Q1=tmp; return T1; } } else { //cherchons Q1 tmp=T1; while(tmp->suivant!=NULL) { tmp=tmp->suivant; } Q1=tmp; if(T2==NULL) { return T1; } else { tmp=T2; while(tmp->suivant!=NULL) { tmp=tmp->suivant; } Q2=tmp; Q1->suivant=T1; Q1=Q2; return T1; } } } void affiche(liste l) { liste tmp=l; while(tmp!=NULL) { printf("%d->",tmp->val); tmp=tmp->suivant; } } int main() { liste T1=NULL,T2=NULL; T1=ajoutEnTete(T1,1); T2=ajoutEnTete(T2,2); affiche(T1); getch(); T1=concat(T1,T2); affiche(T1); getch(); return 0; }
en exécutant ce code j'ai une boucle infinie lors de l'affichage de liste finale(c à d la liste e concaténation).
merci d'avance .
Partager