]> git.llucax.com Git - z.facultad/75.42/euler-oo.git/blobdiff - dllist.h
Se agrega un test de la DLList.
[z.facultad/75.42/euler-oo.git] / dllist.h
index 94c7d54c1d96213ddd7430e772e730539a357009..1d2c34dcaff04fcd0d7a6539a4dfcce6509e453d 100644 (file)
--- 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 <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.
@@ -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 */