]> git.llucax.com Git - z.facultad/75.42/calculadora.git/commitdiff
Se corrigen bugs y se mejora la documentación.
authorLeandro Lucarella <llucax@gmail.com>
Mon, 1 Sep 2003 01:38:09 +0000 (01:38 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Mon, 1 Sep 2003 01:38:09 +0000 (01:38 +0000)
dllist.c
dllist.h

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);
index 432e742a804dd573a5b1d63f801e6c7f0c470de5..4a444461f29dac5588290f8c6644f6d89545654c 100644 (file)
--- a/dllist.h
+++ b/dllist.h
@@ -191,13 +191,23 @@ bool DLList_push(DLList* list, void* data);
 /**
  * Saca el primer elemento de la DLList.
  * Elimina el primer elemento de la DLList devolviendo su contenido.
+ * Ejemplo:
+ * \code
+ * DLList* l;
+ * char*   data;
+ * ...
+ * while (!DLList_empty(l)) {
+ *      data = DLList_shift(l);
+ *      printf("El elemento actual es '%s'.\\n", data);
+ * }
+ * \endcode
  *
  * \param   list DLList de la cual sacar el elemento.
  *
  * \return  Primer elemento de la DLList.
- * \see     DLList_push(), DLList_shift(), DLList_unshift()
+ * \see     DLList_empty(), DLList_pop()
  * \pre     La DLList debe estar \ref DLList_init "inicializada" y no
- *          \ref DLList_empty "vacía".
+ *          \ref DLList_empty "vacía.
  * \post    El puntero interno de la DLList apunta primer elemento.
  */
 void* DLList_shift(DLList* list);
@@ -205,13 +215,23 @@ void* DLList_shift(DLList* list);
 /**
  * Saca el último elemento de la DLList.
  * Elimina el último elemento de la DLList devolviendo su contenido.
+ * Ejemplo:
+ * \code
+ * DLList* l;
+ * char*   data;
+ * ...
+ * while (!DLList_empty(l)) {
+ *      data = DLList_pop(l);
+ *      printf("El elemento actual es '%s'.\\n", data);
+ * }
+ * \endcode
  *
  * \param   list DLList de la cual sacar el elemento.
  *
- * \return  último elemento de la DLList.
- * \see     DLList_push(), DLList_shift(), DLList_unshift()
+ * \return  Último elemento de la DLList.
+ * \see     DLList_empty(), DLList_shift()
  * \pre     La DLList debe estar \ref DLList_init "inicializada" y no
- *          \ref DLList_empty "vacía".
+ *          \ref DLList_empty "vacía.
  * \post    El puntero interno de la DLList apunta último elemento.
  */
 void* DLList_pop(DLList* list);