while (!DLList_empty(list)) {
DLList_pop(list);
}
- /* Libero memoria de la lista. */
- free(list);
}
+ /* Libero memoria de la lista. */
+ free(list);
}
bool DLList_empty(DLList* list) {
return data;
}
+void* DLList_remove_current(DLList* list) {
+ /* Nodo actual */
+ DLNode* current = list->current;
+ /* Datos del nodo actual. */
+ void* data = current->data;
+ /* Si tiene siguiente. */
+ if (current->next) {
+ /* Se pone como anterior del siguiente al anterior del actual. */
+ current->next->prev = current->prev;
+ /* Si no tiene siguiente, se pone como último al anterior del actual. */
+ } else {
+ list->last = current->prev;
+ }
+ /* Si tiene anterior. */
+ if (current->prev) {
+ /* Se pone como siguiente del anterior al siguiente del actual. */
+ current->prev->next = current->next;
+ /* Si no tiene anterior, se pone como primero al siguiente del actual. */
+ } else {
+ list->first = current->next;
+ }
+ /* Pongo como elemento actual al próximo elemento. */
+ list->current = current->next;
+ /* Libero memoria del nodo. */
+ free(current);
+ return data;
+}
+