/* Apunto el nodo actual al nuevo nodo. */
list->current = node;
/* Si la lista está vacía hay que hacer apuntar todo al nuevo nodo. */
- if (DLList_empty(list)) {
+ if (list->first == NULL) {
list->first = node;
list->last = node;
/* Si no está vacía. */
/* Apunto el nodo actual al nuevo nodo. */
list->current = node;
/* Si la lista está vacía hay que hacer apuntar todo al nuevo nodo. */
- if (DLList_empty(list)) {
+ if (list->first == NULL) {
list->first = node;
list->last = node;
/* Si no está vacía. */
void* data = node->data;
/* Pongo como primer nodo al siguiente. */
list->first = node->next;
- /* Pongo el nodo anterior al primero como NULL. */
- list->first->prev = NULL;
- /* Lo pongo como nodo actual. */
+ /* Pongo al primero como nodo actual. */
list->current = list->first;
- /* Si era el único actualizo los otros punteros. */
+ /* Si era el único pongo el último en NULL. */
if (!list->first) {
- list->last = NULL;
- list->current = NULL;
+ list->last = NULL;
+ /* Si no, pongo el anterior en NULL. */
+ } else {
+ list->first->prev = NULL;
}
/* Libero memoria del nodo. */
free(node);
void* data = node->data;
/* Pongo como último nodo al anterior. */
list->last = node->prev;
- /* Pongo el nodo siguiente al último como NULL. */
- list->last->next = NULL;
- /* Lo pongo como nodo actual. */
+ /* Pongo al último como nodo actual. */
list->current = list->last;
- /* Si era el único actualizo los otros punteros. */
+ /* Si era el único pongo el primero en NULL. */
if (!list->last) {
- list->first = NULL;
- list->current = NULL;
+ list->first = NULL;
+ /* Si no, pongo el siguiente en NULL. */
+ } else {
+ list->last->next = NULL;
}
/* Libero memoria del nodo. */
free(node);