J'ai du mal à supprimer tous les membres d'un lien dans une seule fonction. Si je le casse comme vous le voyez ci-dessous, cela fonctionne bien, mais cela semble très inefficace et je veux trouver la bonne façon de le faire. afin de libérer tous les nœuds, j'ai besoin d'avoir une fonction pour libérer d'abord tous les nœuds autres que la tête, puis avoir une fonction libre le lien de tête. Cela semble être facile à faire mais j'ai des problèmes.Utiliser une fonction pour libérer une liste chaînée avec un double pointeur
Merci pour l'aide!
int main() {
struct node *head = NULL;
createList(&head);
//do stuff with list
freeListMembers(head);
freeListHead(&head);
return 0;
}
int createList(struct node **head) {
//create list
return 0;
}
void freeListMembers(struct node *head){
while(head->next != NULL){
head->next = NULL;
free(head->next);
}
return;
}
void freeListHead(struct node **head) {
*head = NULL;
free(*head);
return;
}
Voici le code que je veux travailler mais pas. le problème que je vois est une erreur pour "* head-> next"; où il me dit "l'expression doit avoir le pointeur sur struct ou type union"
int main() {
struct node *head = NULL;
createList(&head);
//do stuff with list
freeAllListMembers(&head);
return 0;
}
int createList(struct node **head) {
//create list
return 0;
}
void freeAllListMembers(struct node **head){
while (head != NULL) {
struct node *temp = *head->next;
free(*head);
*head = temp ;
}
return;
}
Vous * faire * une fonction qui permet de libérer la tête et tous les membres. C'est nommé 'main()'. Votre question serait plus claire et donnerait plus de poids aux réponses, si vous présentez quelque chose que vous avez essayé, et qui a donc la forme que vous voulez, mais cela ne fonctionne pas pour vous. –
@JohnBollinger THanks! J'ai ajouté le code que je veux travailler ci-dessus – skevthedev