Universidad de Costa Rica
|
|
Lo usual es implementar una lista usando un puntero a los nodos enlazados en memoria dinámica. Muchos alumnos de computación han implementado esa lista, pero es difícil encontrar una lista que pueda cambiar su representación interna de acuerdo a su uso. Su trabajo consiste en producir una lista que comience almacenando sus valores en un vector de dimensión 64, pero que luego pueda cambiar de manera que almacene sus valores en nodos enlazados.
Si lo desea, escriba su implementación completa, aunque lo más recomendable es que reutilice alguna de las implementaciones ya disponibles. En el Rep de la clase incluya varios atributos que le permitan convertir la lista vectorial en enlazada cuando la operación de inserción ya ha gastado el máximo de copias de valores en el vector (suponga que ese máximo no es superior a 5 veces la dimensión del vector interno de la lista). Recuerde que si agrega valores al final de la lista, en muchos casos la inserción se puede hacer rápidamente porque no hay que copiar ningún valor, mientras que una inserción al principio del vector obliga a copiar todos los valores almacenados.
Implemente las siguientes operaciones de la lista:
push_back(), pop_back(), push_front(),
pop_front(), insert()
. Como insert()
usa un
iterador, implemente
también la clase iterador con todas sus operaciones.
Recuerde que siempre debe incluir ejemplos de uso
BUnit.h
en la
documentación
Doxygen de todas las clases.
(64 x 5)
. La otra razón por la que
habría que desechar el vector es porque la lista tiene que
almacenar más de 64 valores. En el
Rep de la clase es
necesario mantener contadores que indican cuántos elementos
tiene la lista y también cuántas operaciones de
copia se han realizado.
n==size()
.Entregue su tarea por correo electrónico, como lo hizo anteriormente.
Tiempo de entrega: | 7 días |
|
|
Segunda etapa: | 3 días | ||
Modalidad: | En parejas |
Adolfo Di Mare <adolfo@di-mare.com>.
|