Saltar al contenido

C: ¿Cómo liberar nodos en la lista enlazada?

Solución:

Una función iterativa para liberar tu lista:

void freeList(struct node* head)
{
   struct node* tmp;

   while (head != NULL)
    {
       tmp = head;
       head = head->next;
       free(tmp);
    }

}

Lo que hace la función es lo siguiente:

  1. comprobar si head es NULL, si es así, la lista está vacía y simplemente regresamos

  2. Salva el head en un tmp variable y hacer head apunte al siguiente nodo de su lista (esto se hace en head = head->next

  3. Ahora podemos con seguridad free(tmp) variable, y head solo apunta al resto de la lista, vuelve al paso 1

Simplemente iterando sobre la lista:

struct node *n = head;
while(n){
   struct node *n1 = n;
   n = n->next;
   free(n1);
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *