1 /* vim: set et sts=4 sw=4 fdm=marker fmr={,} fdn=1 fo+=t tw=80:
3 * Taller de Programación (75.42).
8 * Copyleft 2003 - Leandro Lucarella <llucare@fi.uba.ar>
9 * Puede copiar, modificar y distribuir este programa bajo los términos de
10 * la licencia GPL (http://www.gnu.org/).
12 * Creado: Wed Sep 17 21:07:54 ART 2003
26 /// Nodo de la lista doblemente enlazada.
29 /// Puntero al nodo anterior.
32 /// Datos almacenados en el nodo.
35 /// Puntero al próximo nodo.
39 DLListNode(DLListNode* prev = NULL, void* data = NULL,
40 DLListNode* next = NULL): prev(prev), data(data), next(next) {
42 std::cerr << "En constructor de DLListNode." << std::endl;
47 virtual ~DLListNode(void) {
49 std::cerr << "En destructor de DLListNode." << std::endl;
55 /// Lista doblemente enlazada.
60 /// Puntero al primer nodo.
63 /// Puntero al nodo actual.
66 /// Puntero al último nodo.
71 /// Crea una nueva lista.
74 /// Libera la memoria ocupada por una lista.
75 virtual ~DLList(void);
78 * Indica si está vacía.
80 * \return true si está vacía, false si no.
85 * Apunta al primer elemento, devolviendolo.
86 * Hace que el elemento actual sea el primero y devuelve su valor.
87 * Si está vacía, devuelve NULL.
88 * Siempre que se quiera recorrer la lista de izquierda a derecha
89 * debería usarse esta función primero. Por ejemplo:
94 * for (data = list.begin(); list.have_more(); data = list.next()) {
95 * printf("El elemento actual es '%s'.\\n", data);
99 * \return Primer elemento o NULL si está vacía.
100 * \see have_more(), next(), end(), prev()
105 * Apunta al último elemento, devolviendolo.
106 * Hace que el elemento actual sea el último y devuelve su valor.
107 * Si está vacía, devuelve NULL.
108 * Siempre que se quiera recorrer la lista de derecha a izquierda
109 * debería usarse esta función primero. Por ejemplo:
114 * for (data = list.end(); list.have_more(); data = list.prev()) {
115 * printf("El elemento actual es '%s'.\\n", data);
119 * \return Último elemento o NULL si está vacía.
120 * \see DLList_have_more(), DLList_prev(), DLList_begin(), DLList_next()
121 * \pre La DLList debe estar \ref DLList_new "creada" correctamente.
126 * Indica si se puede obtener otro elemento de la lista.
128 * \return true si se puede obtener otro elemento, false si no.
129 * \see begin(), end(), prev(), next()
131 bool have_more(void);
134 * Obtiene el elemento actual.
136 * \return Elemento actual o NULL si se terminó de recorrer o está vacía.
137 * \see prev(), next(), have_more()
142 * Obtiene el próximo elemento.
144 * \return Siguiente elemento o NULL si es el último.
145 * \see begin(), have_more(), current(), prev()
150 * Obtiene el elemento anterior.
152 * \return Elemento anterior o NULL si es el primero.
153 * \see begin(), have_more(), current(), next()
158 * Agrega un elemento al inicio.
160 * \param data Elemento a agregar.
162 * \return true si se agregó, false si no hay más memoria.
163 * \see push(), pop(), unshift()
165 bool unshift(void* data);
168 * Agrega un elemento al final.
170 * \param data Elemento a agregar.
172 * \return true si se agregó, false si no hay más memoria.
173 * \see pop(), shift(), unshift()
175 bool push(void* data);
178 * Saca el primer elemento.
179 * Elimina el primer elemento devolviendo su contenido.
185 * while (!list.empty()) {
186 * data = list.shift();
187 * printf("El elemento actual es '%s'.\\n", data);
191 * \return Primer elemento o NULL si está vacía.
192 * \see empty(), pop(), remove_current()
193 * \warning Es necesario comprobar antes si está vacía, ya que puede
194 * devolver NULL también si el elemento de la lista es NULL.
199 * Saca el último elemento.
200 * Elimina el último elemento devolviendo su contenido.
206 * while (!list.empty()) {
208 * printf("El elemento actual es '%s'.\\n", data);
212 * \return Último elemento o NULL si está vacía.
213 * \see empty(), shift(), remove_current()
214 * \warning Es necesario comprobar antes si está vacía, ya que puede
215 * devolver NULL también si el elemento de la lista es NULL.
220 * Elimina el elemento actual.
221 * Elimina el elemento actual devolviendo su contenido.
223 * \return Elemento actual o NULL si no hay más elementos.
224 * \see empty(), current(), have_more()
225 * \warning Es necesario comprobar antes si está vacía, ya que puede
226 * devolver NULL también si el elemento de la lista es NULL.
228 void* remove_current(void);
232 #endif /* DLLIST_H */