From 14e3bef578b8abe6d15cc7beb727df23122be421 Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Mon, 1 Sep 2003 05:48:10 +0000 Subject: [PATCH] =?utf8?q?Se=20cambia=20el=20inicializador=20para=20que=20?= =?utf8?q?sea=20m=C3=A1s=20parecido=20a=20un=20constructor=20y=20se=20actu?= =?utf8?q?aliza=20la=20documentaci=C3=B3n.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- dllist.c | 24 +++++++++++++++++------- dllist.h | 48 ++++++++++++++++++++++++++++-------------------- 2 files changed, 45 insertions(+), 27 deletions(-) diff --git a/dllist.c b/dllist.c index 20f45c6..5a190a4 100644 --- a/dllist.c +++ b/dllist.c @@ -18,18 +18,28 @@ /* Para usar NULL, malloc() y free(). */ #include -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); } } diff --git a/dllist.h b/dllist.h index 4a44446..80aff11 100644 --- 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); -- 2.43.0