-/* 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 <llucare@fi.uba.ar>
* Puede copiar, modificar y distribuir este programa bajo los términos de
#ifndef DLLIST_H
#define DLLIST_H
-/** Nodo de la lista doblemente enlazada. */
+#include <cstdlib>
+
+#ifdef DEBUG
+# include <iostream>
+#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.
* \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);
*/
void* remove_current(void);
+};
+
#endif /* DLLIST_H */