Voici ma structure de liste utilisé :
Voici mes methodes respective :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 typedef struct s_list { int valeur; list suiv; } slist ;
Maintenant quand j'effectue un parcourt sur ma liste par exemple de cette facon :
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 void Insert(slist **sl, int*Val) { slist *tmp = NULL; slist *csl = *sl; slist *elem = malloc(sizeof(slist)); if(!elem) return; elem->valeur = Val; while(csl && csl->valeur->poid > Val->poid) { tmp = csl; csl = csl->suiv; } elem->suiv = csl; if(tmp) tmp->suiv = elem; else *sl = elem; } t_noeud Pop(slist **sl) { t_noeud *Val; t_noeud *nul; creerNoeud(&nul); nul = NULL; slist *tmp; if(!*sl) return *nul; tmp = (*sl)->suiv; *Val = (*(*sl)->valeur); free(*sl); *sl = tmp; return *Val; } void Clear(slist **sl) { slist *tmp; while(*sl) { tmp = (*sl)->suiv; free(*sl); *sl = tmp; } } int Length(slist *sl) { int n=0; while(sl) { n++; sl = sl->suiv; } return n; } void View(slist *sl) { while(sl) { printf("%d\n",sl->valeur); sl = sl->suiv; } }
L'affichage fonctionne correctement mais forcement je me retrouve en fin de liste et donc lorsque j'essaie de re afficher une seconde fois ma liste et bien cela marche pas. Comment faire pour conserver une sauvegarde du premier élément de la liste pour pouvoir remettre la liste correctement apres affichage ? J'ai essayé plusieurs choses mais j'avoue me perdre un peu dans les pointeurs...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 while(sl) { sl = sl->suiv; }
Ou alors est-il possible de copier simplement le contenu de la liste ?
Partager