]> git.llucax.com Git - z.facultad/75.42/calculadora.git/blobdiff - dllist.c
Se corrigen bugs y se mejora la documentación.
[z.facultad/75.42/calculadora.git] / dllist.c
index 629f7f5733d23753385fdac162470a482bdd5201..773d5e1e2f448f6b9b6ac998f1fec2669aaf3573 100644 (file)
--- a/dllist.c
+++ b/dllist.c
@@ -95,7 +95,7 @@ bool DLList_unshift(DLList* list, void* data) {
         /* 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. */
@@ -120,7 +120,7 @@ bool DLList_push(DLList* list, void* data) {
         /* 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. */
@@ -141,14 +141,14 @@ void* DLList_shift(DLList* list) {
     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);
@@ -162,14 +162,14 @@ void* DLList_pop(DLList* list) {
     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);