Algoritmos e Estruturas de Dados 2º ano, 1º semestre – 2017/2018 Ficha Prática 4
LISTAS DUPLAS NÃO ORDENADAS
Acrescente ao seu projeto das aulas práticas o código fonte existente no projeto das aulas teóricas. Os exercícios seguintes devem ser desenvolvidos nos packages: • pt.ipleiria.estg.dei.aed.colecoes.iteraveis • pt.ipleiria.estg.dei.aed.colecoes.iteraveis.lineares.naoordenadas.estruturas • pt.ipleiria.estg.dei.aed.colecoes.iteraveis.lineares.naoordenadas.utilizacao
Descarregue os ficheiros de apoio à ficha 4 a partir do moodle e coloque-os no
a) De acordo com a estrutura apresentada na Figura 1 implemente a estrutura de
dados ListaDuplaNaoOrdenada<T> (que implemente a interface ColecaoIteravelLinearNaoOrdenada<T>,); i. Defina os atributos da classe; ii. Implemente a classe interna ListaDuplaNaoOrdenada<T>.No; iii. Implemente o construtor; iv. Implemente os restantes métodos de acordo com a seguinte ordem: • Inserção no início e no fim; • Pesquisa; • Inserção em qualquer posição; • Remoção; • Consulta; • Contém; • Número de elementos; • Iterador. 1/2 v. Crie a interface IteradorIteravelDuplo<T> que acrescente à interface IteradorIteravel<T> os métodos: • Verificar se pode recuar; • Recuar para o elemento anterior e devolvê-lo;
vi. Implemente a classe interna ListaDuplaNaoOrdenada<T>.Iterador
(que implemente a interface IteradorIteravelDuplo<T>). b) Utilizando a classe MainPraticaListaDuplaNaoOrdenada, teste a ListaDuplaNaoOrdenada<T>; c) Usando o JGrasp, visualize as alterações efetuadas na lista durante o teste.
2. Lista Dupla Circular com Base Não Ordenada
Figura 2. Esquema de uma Lista Dupla Circular com Base Não Ordenada
a) De acordo com a Figura 2 implemente a estrutura de dados
ListaDuplaCircularBaseNaoOrdenada<T> (que implemente a interface ColecaoIteravelLinearNaoOrdenada<T>); i. Defina os atributos da classe; ii. Implemente a classe interna ListaDuplaCircularBaseNaoOrdenada<T>.No; iii. Implemente o construtor; iv. Implemente os restantes métodos de acordo com a seguinte ordem: • Inserção no início e no fim; • Pesquisa; • Inserção em qualquer posição; • Remoção; • Consulta; • Contém; • Número de elementos; • Iterador. v. Implemente a classe interna ListaDuplaCircularBaseNaoOrdenada<T>.Iterador (que implemente IteradorIteravelDuplo<T>). b) Utilizando a classe MainPraticaListaDuplaCircularBaseNaoOrdenada, teste a ListaDuplaCircularBaseNaoOrdenada<T>; c) Usando o JGrasp, visualize as alterações efetuadas na lista durante o teste.