Otros dos comentarios:
* En C no es necesario ni se recomienda la conversión explicita al llamar a las funciones calloc, malloc o realloc (para el caso cualquiera que retorne un valor de tipo "void *") ya que esa conversión es automática.
* El programa revienta después de crear la lista cuando se trata de agregar un nodo con la función "insertar_detras".
1) Después de crear la lista el valor de los campos last y pdi de la variable *l es el mismo, apuntan al mismo objeto (ultimo nodo en la lista).
2) Las lineas que causan el "Segmentation fault" son dos:
Un saludo
* En C no es necesario ni se recomienda la conversión explicita al llamar a las funciones calloc, malloc o realloc (para el caso cualquiera que retorne un valor de tipo "void *") ya que esa conversión es automática.
* El programa revienta después de crear la lista cuando se trata de agregar un nodo con la función "insertar_detras".
1) Después de crear la lista el valor de los campos last y pdi de la variable *l es el mismo, apuntan al mismo objeto (ultimo nodo en la lista).
2) Las lineas que causan el "Segmentation fault" son dos:
Código (c) [Seleccionar]
temporal->next = l->pdi->next;
/*
** l->pdi y l->last apuntan al mismo nodo, el ultimo. Su campo
** "next" es igual a NULL por razones obvias. El punto clave aqui
** es: temporal->next es NULL
*/
l->pdi->next = temporal; /* No impacta */
temporal->next->prev = temporal;
/*
** temporal->next->prev ==> NULL->prev ==> el error que mencionas
*/
Un saludo