Hello ! Il neige à Montréal !

Trois questions petites questions sur les pointeurs :

  • Ce que j'ai écrit supprime bien le noeud ?

  • Dois-je faire un free(), c'est à dire libérer la mémoire du noeud supprimé après ?
  • Pour utiliser ce code à partir d'autres fichier C, est-il obligatoire de mettre extern ? Sinon pourquoi ? Dois-je ou puis-je le mettre sur le typeDef Racines ?


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
typedef struct Racines {
	val_t *objet;
	struct Racines *next;
} Racines;
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
extern void delete_root(val_t *node, Racines *l) {
	// on supprime dés qu'on trouve, sinon rien
	Racines R = *l;
	Racines temp;
	while (R->objet != *node) {
		temp = R;
		R = R->next;
	}
	// si on a trouve le noeud a supprimer
	if (R->objet == *node) {
		temp->next = R->next;
	}
	else {
		fprintf("ce noeud n\'existe pas !");
	}
}
Merci de vos réponses !