Salut,
Je voudrais savoir comment apres avoir identifier un element en comparant ces donnees, le supprimer en faisant pointer l'element precedent vers celui d'apres, celui que je desire supprimer a l'aide de free.
Salut,
Je voudrais savoir comment apres avoir identifier un element en comparant ces donnees, le supprimer en faisant pointer l'element precedent vers celui d'apres, celui que je desire supprimer a l'aide de free.
Il faut garder un pointeur sur le précédent c'est la seule solution ou alors travailler avec une liste doublement chaînée.
"La haine seule fait des choix" - Koan Zen
"Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
"Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
Faites du Prolog, ça vous changera les idées !
Ma page Prolog
Mes codes sources commentés
Mon avatar : La Madeleine à la veilleuse de Georges de La Tour
Je pense que la liste doublement chaînée est la meilleure solution.
En plus, tu peux plus facilement vérifier qu'une liste est OK et ne se termine pas en boucle...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
ok mais je sais pas encore faire de liste doublement chainee
C'est pas beaucoup plus difficile, tu sais.
Essaie, on t'aideras à corriger si ça ne marche pas.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
ok je vais tenter ca demain dans la journee, je posterai mon code en meme temps merci pour vos reponses
? C'est pas compliqué voire plus simple qu'une liste simple ; il suffit de déclarer des pointeurs vers noeuds suivants et précédentsEnvoyé par Pitou5464
typedef struct element { int numero; int valeur;};
typedef struct gestionnaire_liste{ element *noeud ; gestionnaire_liste*precedent ;
gestionnaire_liste*suivant ;
};
voila le code mais je sais pas a a quoi correspond tete
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 typedef struct s_list { void *data; struct s_list *next; } t_list; int my_rm_all_eq_from_list(t_list **begin,void *data_ref,int (*cmp)()) { t_liste *precedent; t_liste *ptrcourant; *precedent = NULL; *ptrcourant = tete; while (ptrcourant != 0 && ptrcourant->data != data_ref) { precedent = ptrcourant; ptrcourant = ptrcourant->next; } if (ptrcourant != 0) if (precedent == 0) tete = tete->next; else precedent->next = ptrcourant->next; } void *xmalloc(int size) { void *temp; temp = malloc(size); if (temp == 0) exit(1); return (temp); }
Partager