]> git.llucax.com Git - z.facultad/75.42/calculadora.git/commitdiff
Se cambia el inicializador para que sea más parecido a un constructor y se actualiza...
authorLeandro Lucarella <llucax@gmail.com>
Mon, 1 Sep 2003 05:48:10 +0000 (05:48 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Mon, 1 Sep 2003 05:48:10 +0000 (05:48 +0000)
dllist.c
dllist.h

index 20f45c6896342d615fbe4fb2ca1ad90f7497b439..5a190a4419fe95e13a124e2e2287c275ccb4b73e 100644 (file)
--- a/dllist.c
+++ b/dllist.c
 /* Para usar NULL, malloc() y free(). */
 #include <stdlib.h>
 
-bool DLList_init(DLList* list) {
+DLList* DLList_new(void) {
     /* Aloco memoria para la lista. */
-    /*list = (DLList*)malloc(sizeof(DLList));*/
-    /* Si la obtuve, inicializo todo a NULL y devuelvo TRUE. */
+    DLList* list = (DLList*)malloc(sizeof(DLList));
+    /* Si la obtuve, inicializo todo a NULL. */
     if (list) {
         list->first   = NULL;
         list->current = NULL;
         list->last    = NULL;
-        return TRUE;
-    /* Si no hay más memoria devuelvo FALSE. */
-    } else {
-        return FALSE;
+    }
+    /* Devuelvo el nuevo puntero. */
+    return list;
+}
+
+void DLList_delete(DLList* list) {
+    /* Si el puntero a la lista no es NULL. */
+    if (list) {
+        /* Elimino los nodos. */
+        while (!DLList_empty(list)) {
+            DLList_pop(list);
+        }
+        /* Libero memoria de la lista. */
+        free(list);
     }
 }
 
index 4a444461f29dac5588290f8c6644f6d89545654c..80aff11ded80a55ac2f64c6891354c138f118e18 100644 (file)
--- a/dllist.h
+++ b/dllist.h
@@ -40,9 +40,10 @@ struct DLNodeStruct {
 /**
  * Lista doblemente enlazada.
  *
- * \see DLList_init(), DLList_empty(), DLList_begin(), DLList_end(),
- *      DLList_have_more(), DLList_current(), DLList_next(), DLList_prev(),
- *      DLList_unshift(), DLList_push(), DLList_shift(), DLList_pop()
+ * \see DLList_new(), DLList_delete(), DLList_empty(), DLList_begin(),
+ *      DLList_end(), DLList_have_more(), DLList_current(), DLList_next(),
+ *      DLList_prev(), DLList_unshift(), DLList_push(), DLList_shift(),
+ *      DLList_pop()
  */
 typedef struct {
     /** Puntero al primer nodo. */
@@ -54,13 +55,20 @@ typedef struct {
 } DLList;
 
 /**
- * Inicializa la DLList.
+ * Crea una nueva lista.
  *
- * \param   list DLList a inicializar.
+ * \return  Puntero a la nueva DLList o NULL si no hay más memoria.
+ */
+DLList* DLList_new(void);
+
+/**
+ * Libera la memoria ocupada por una lista.
+ *
+ * \param   list DLList a liberar.
  *
- * \return  \ref TRUE si se inicializó bien, \ref FALSE si hay error.
+ * \pre     La DLList debe estar \ref DLList_new "creada" correctamente.
  */
-bool DLList_init(DLList* list);
+void DLList_delete(DLList* list);
 
 /**
  * Indica si la DLList está vacía.
@@ -68,7 +76,7 @@ bool DLList_init(DLList* list);
  * \param   list DLList a verificar.
  *
  * \return  \ref TRUE si está vacía, \ref FALSE si no.
- * \pre     La DLList debe estar \ref DLList_init "inicializada".
+ * \pre     La DLList debe estar \ref DLList_new "creada" correctamente.
  */
 bool DLList_empty(DLList* list);
 
@@ -91,7 +99,7 @@ bool DLList_empty(DLList* list);
  *
  * \return  Primer elemento o NULL si está vacía.
  * \see     DLList_have_more(), DLList_next(), DLList_end(), DLList_prev()
- * \pre     La DLList debe estar \ref DLList_init "inicializada".
+ * \pre     La DLList debe estar \ref DLList_new "creada" correctamente.
  */
 void* DLList_begin(DLList* list);
 
@@ -114,7 +122,7 @@ void* DLList_begin(DLList* list);
  *
  * \return  Último elemento o NULL si está vacía.
  * \see     DLList_have_more(), DLList_prev(), DLList_begin(), DLList_next()
- * \pre     La DLList debe estar \ref DLList_init "inicializada".
+ * \pre     La DLList debe estar \ref DLList_new "creada" correctamente.
  */
 void* DLList_end(DLList* list);
 
@@ -125,7 +133,7 @@ void* DLList_end(DLList* list);
  *
  * \return  \ref TRUE si se puede obtener otro elemento, \ref FALSE si no.
  * \see     DLList_begin(), DLList_end(), DLList_prev(), DLList_next()
- * \pre     La DLList debe estar \ref DLList_init "inicializada".
+ * \pre     La DLList debe estar \ref DLList_new "creada" correctamente.
  */
 bool DLList_have_more(DLList* list);
 
@@ -136,7 +144,7 @@ bool DLList_have_more(DLList* list);
  *
  * \return  Elemento actual o NULL si se terminó de recorrer o está vacía.
  * \see     DLList_prev(), DLList_next(), DLList_have_more()
- * \pre     La DLList debe estar \ref DLList_init "inicializada".
+ * \pre     La DLList debe estar \ref DLList_new "creada" correctamente.
  */
 void* DLList_current(DLList* list);
 
@@ -147,7 +155,7 @@ void* DLList_current(DLList* list);
  *
  * \return  Siguiente elemento o NULL si es el último.
  * \see     DLList_begin(), DLList_have_more(), DLList_current(), DLList_prev()
- * \pre     La DLList debe estar \ref DLList_init "inicializada".
+ * \pre     La DLList debe estar \ref DLList_new "creada" correctamente.
  */
 void* DLList_next(DLList* list);
 
@@ -158,7 +166,7 @@ void* DLList_next(DLList* list);
  *
  * \return  Elemento anterior o NULL si es el primero.
  * \see     DLList_begin(), DLList_have_more(), DLList_current(), DLList_next()
- * \pre     La DLList debe estar \ref DLList_init "inicializada".
+ * \pre     La DLList debe estar \ref DLList_new "creada" correctamente.
  */
 void* DLList_prev(DLList* list);
 
@@ -170,7 +178,7 @@ void* DLList_prev(DLList* list);
  *
  * \return  \ref TRUE si se agregó, \ref FALSE si no hay más memoria.
  * \see     DLList_push(), DLList_pop(), DLList_unshift()
- * \pre     La DLList debe estar \ref DLList_init "inicializada".
+ * \pre     La DLList debe estar \ref DLList_new "creada" correctamente.
  * \post    El puntero interno de la DLList apunta al nuevo elemento.
  */
 bool DLList_unshift(DLList* list, void* data);
@@ -183,7 +191,7 @@ bool DLList_unshift(DLList* list, void* data);
  *
  * \return  \ref TRUE si se agregó, \ref FALSE si no hay más memoria.
  * \see     DLList_pop(), DLList_shift(), DLList_unshift()
- * \pre     La DLList debe estar \ref DLList_init "inicializada".
+ * \pre     La DLList debe estar \ref DLList_new "creada" correctamente.
  * \post    El puntero interno de la DLList apunta al nuevo elemento.
  */
 bool DLList_push(DLList* list, void* data);
@@ -206,8 +214,8 @@ bool DLList_push(DLList* list, void* data);
  *
  * \return  Primer elemento de la DLList.
  * \see     DLList_empty(), DLList_pop()
- * \pre     La DLList debe estar \ref DLList_init "inicializada" y no
- *          \ref DLList_empty "vacía.
+ * \pre     La DLList debe estar \ref DLList_new "creada" correctamente y no
+ *          debe estar \ref DLList_empty "vacía.
  * \post    El puntero interno de la DLList apunta primer elemento.
  */
 void* DLList_shift(DLList* list);
@@ -230,8 +238,8 @@ void* DLList_shift(DLList* list);
  *
  * \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.
+ * \pre     La DLList debe estar \ref DLList_new "creada" correctamente y no
+ *          debe estar \ref DLList_empty "vacía.
  * \post    El puntero interno de la DLList apunta último elemento.
  */
 void* DLList_pop(DLList* list);