suppression d'un maillon - C - Programmation
Marsh Posté le 06-01-2004 à 18:45:26
euh avec le return tu fais au plus une seul itération dans ton while.
«vous êtes le maillon faible aurevoir» désolé ...
Marsh Posté le 06-01-2004 à 18:54:47
ça marche mieux ça, non ???
reglst *suppression() {
reglst *maillon_suivant = debut;
while(maillon_suivant!=maillon) {
maillon_suivant = maillon->next;
}
maillon_suivant = maillon->next;
free(maillon->expr);
free(maillon);
return maillon_suivant;
}
Scusez, m'y suis mis y a quinze jours au C
Marsh Posté le 06-01-2004 à 19:09:03
Ben s'il y a plus rapide, je suis preneur ... ça c'est censé venir du Fortran à l'origine.
Marsh Posté le 06-01-2004 à 19:11:54
et ca marchait ?
parce que la, ben t'as un next qui va pointer dans les choux
Marsh Posté le 06-01-2004 à 19:26:26
ben en fait, qd on appellait la fonction, c'est en faisant maillon=suppression();
Vi, je sais, quand les matheux programment, c'est pas bô à voir mdr
Marsh Posté le 06-01-2004 à 19:29:26
mais que fait la commande free exactement ??? elle vide quoi qd on a construit un pointeur sur un type qui contient lui même des pointeurs ???
Marsh Posté le 06-01-2004 à 22:08:25
struct choucroute
{
choucroute* next;
};
delete sur un pointeur pointant vers une structure choucroute ne va détruire que celle-ci, pas ses "fils".
Marsh Posté le 07-01-2004 à 00:32:36
bibi, tu veux qu'elle fasse quoi exactement ta fonction?
(as tu pense a ce qu'elle doit retourner si le maillon a virer est le premier, ou le dernier de ta liste chainée?)
A+,
Marsh Posté le 07-01-2004 à 07:32:14
gilou a écrit : bibi, tu veux qu'elle fasse quoi exactement ta fonction? |
j'allais le dire.
Marsh Posté le 06-01-2004 à 18:41:04
Quelqu'un pourrait-il m'expliquer l'utilité de la boucle while dans ce cas précis s'il vous plait ??? Maillon et Debut sont des variables globales. En théorie, après le Free, l'égailté est forcément fausse non ???
reglst *desinserer(){
reglst *maillon_suiv = debut;
while ((maillon == maillon_suiv)){
maillon_suiv = maillon->next;
free(maillon->expr);
free(maillon);
return maillon_suiv;
}
}