X-Git-Url: https://git.llucax.com/z.facultad/75.42/euler-oo.git/blobdiff_plain/311f7855bfd0a11c40a239edf199c14c31f8025d..360793b55c03f1de538e606f5259bb24c23257b3:/dllist.h diff --git a/dllist.h b/dllist.h index 94c7d54..1d2c34d 100644 --- a/dllist.h +++ b/dllist.h @@ -1,9 +1,9 @@ -/* vim: set et sts=4 sw=4 fdm=indent fdl=1 fdn=1 fo+=t tw=80: +/* vim: set et sts=4 sw=4 fdm=marker fmr={,} fdn=1 fo+=t tw=80: * * Taller de Programación (75.42). * * Ejercicio Número 3: - * TODO + * Lista de figuras. * * Copyleft 2003 - Leandro Lucarella * Puede copiar, modificar y distribuir este programa bajo los términos de @@ -17,39 +17,62 @@ #ifndef DLLIST_H #define DLLIST_H -/** Nodo de la lista doblemente enlazada. */ +#include + +#ifdef DEBUG +# include +#endif + +/// Nodo de la lista doblemente enlazada. struct DLListNode { - /** Puntero al nodo anterior. */ + + /// Puntero al nodo anterior. DLListNode* prev; - /** Datos almacenados en el nodo. */ + + /// Datos almacenados en el nodo. void* data; - /** Puntero al próximo nodo. */ + + /// Puntero al próximo nodo. DLListNode* next; + + /// Constructor. + DLListNode(DLListNode* prev = NULL, void* data = NULL, + DLListNode* next = NULL): prev(prev), data(data), next(next) { +#ifdef DEBUG + std::cerr << "En constructor de DLListNode." << std::endl; +#endif + } + + /// Destructor. + virtual ~DLListNode(void) { +#ifdef DEBUG + std::cerr << "En destructor de DLListNode." << std::endl; +#endif + } + }; -/** - * Lista doblemente enlazada. - */ +/// Lista doblemente enlazada. class DLList { protected: - /** Puntero al primer nodo. */ + + /// Puntero al primer nodo. DLListNode* first; - /** Puntero al nodo actual. */ - DLListNode* current; - /** Puntero al último nodo. */ + + /// Puntero al nodo actual. + DLListNode* curr; + + /// Puntero al último nodo. DLListNode* last; public: - /** - * Crea una nueva lista. - */ + + /// Crea una nueva lista. DLList(void); - /** - * Libera la memoria ocupada por una lista. - */ - ~DLList(void); + /// Libera la memoria ocupada por una lista. + virtual ~DLList(void); /** * Indica si está vacía. @@ -94,8 +117,7 @@ class DLList { * \endcode * * \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_new "creada" correctamente. + * \see have_more(), prev(), begin(), next() */ void* end(void); @@ -204,4 +226,6 @@ class DLList { */ void* remove_current(void); +}; + #endif /* DLLIST_H */