Exercício 1

Implemente em C++ uma pequena infra-estrutura para manipulação de listas dinâmicas (correspondente à classe Vector de Java). O diagrama de classes está esboçado abaixo.

Observações:

Exercício 2

Modifique o código de Vector para armazenar os dados em uma lista duplamente encadeada (crie a classe "Lista" se achar conveniente). Otimize os métodos de consulta, inserção e deleção mantendo um apontador (ou vários apontadores) para a última posição visitada da lista e iniciando as suas buscas a partir desse apontador (e não necessariamente de head ou tail).  

Exercício 3

A nossa classe Vector armazena apenas instâncias de Object. Modifique a classe Vector para armazenar também valores de tipos primitivos.
Dica. Em Java,  podemos declarar um objeto to tipo array passando o tipo das variáveis a serem armazenadas. Ou seja, Array é uma classe parametrizada. C++ dá suporte para a definição de classes parametrizadas arbitrárias.