[ED269] Inserindo e removendo numa lista

Neste problema deverá apenas submeter uma classe SinglyLinkedList<T> (e não um programa completo).


Código Base

Use como base a classe SinglyLinkedList<T> (ver código | download de Node.Java e SinglyLinkedList.Java), que representa uma lista ligada simples e tem disponíveis métodos para adicionar ou remover um elemento no início ou no final, devolver o tamanho, saber se a lista está vazia ou retornar representação em string para escrita (tal como dado nas aulas).

Métodos a Implementar

Deve acrescentar à classe dada os seguintes métodos (não modificando nenhum dos métodos já existentes no código base):

Notas

 

Exemplos de Input/Output para o método duplicate

Lista inicial Chamada Estado da lista depois da chamada
list = {'a','b','c','d'} list.duplicate(0) list = {'a','a','b','c','d'}
list = {'a','b','c','d'} list.duplicate(1) list = {'a','b','b','c','d'}
list = {'a','b','c','d'} list.duplicate(3) list = {'a','b','c','d','d'}
list = {2,4,42,8,10} list.duplicate(2) list = {2,4,42,42,8,10}

 

Exemplos de Input/Output para o método remove

Lista inicial   Chamada   O que deve ser devolvido
list = {2,4,8,6,10,12} list.remove([]) new_list = {2,4,8,6,10,12}
list = {2,4,8,6,10,12} list.remove([0,1,2,3,4,5]) new_list = {}
list = {2,4,8,6,10,12} list.remove([0,2,4]) new_list = {4,6,12}
list = {2,4,8,6,10,12} list.remove([1,3,4,5]) new_list = {2,8}
list = {'a','b','c','d'} list.remove([1,2]) new_list = {'a','d'}
list = {"quarenta,"e","dois"} list.remove([0,2]) new_list = {"e"}

 


Teste Prático de Estruturas de Dados (CC1007)