Percursos
/
Java
Java
/
Exercícios
/
Lista ligada
Lista ligada

Lista ligada

Médio

Introdução

Estás a trabalhar num projeto para desenvolver um sistema de horários para uma rede ferroviária movimentada.

Foi-te pedido que desenvolvesses um protótipo para as rotas dos comboios no sistema de horários. Cada rota é composta por uma sequência de estações onde um determinado comboio para.

Instruções

A tua equipa decidiu usar uma lista duplamente ligada para representar cada rota de comboio no horário. Cada estação ao longo da rota do comboio será representada por um nó na lista ligada.

Não precisas de te preocupar com as horas de chegada e de partida nas estações. Cada estação será simplesmente representada por um número.

As rotas podem ser estendidas, acrescentando estações ao início ou ao fim de uma rota. Também podem ser encurtadas, removendo estações do início ou do fim de uma rota.

Por vezes, uma estação é encerrada e, nesse caso, tem de ser removida da rota, mesmo que não esteja no início nem no fim da rota.

O tamanho de uma rota não se mede pela distância que o comboio percorre, mas pelo número de estações onde para.

Note

A lista ligada é uma estrutura de dados fundamental da informática, usada frequentemente na implementação de outras estruturas de dados. Como o nome sugere, é uma lista de nós ligados entre si. É uma lista de "nós", em que cada nó se liga ao seu vizinho ou vizinhos. Numa lista ligada simples, cada nó liga-se apenas ao nó que se lhe segue. Numa lista duplamente ligada, cada nó liga-se tanto ao nó que vem antes como ao nó que vem depois.

Se quiseres aprofundar os teus conhecimentos sobre listas ligadas, espreita este artigo, que as explica com desenhos muito claros.

Implementação

Este exercício introduz os genéricos. Para os testes passarem, tens de construir a tua classe de modo a que aceite qualquer tipo de valor, por exemplo Integer ou String.

Os genéricos são úteis porque te permitem escrever código mais geral e reutilizável. As implementações List e Map do Java são ambas exemplos de classes que usam genéricos. Ao usá-las, podes construir uma List que contém Integers ou uma lista que contém Strings ou qualquer outro tipo.

Há algumas restrições nos tipos usados com genéricos. Uma delas é que, depois de construíres uma List que contém Integers, já não podes colocar Strings lá dentro. Tens de especificar que tipo queres colocar na classe quando a constróis, e essa instância só pode depois ser usada com esse tipo.

Por exemplo, podias construir uma lista de Integers:

List<Integer> someList = new LinkedList<>();

Agora, someList só pode conter Integers. Também podias fazer:

List<String> someOtherList = new LinkedList<>()

Agora, someOtherList só pode conter Strings.

Outra restrição é que qualquer tipo usado com genéricos não pode ser um tipo primitivo, como int ou long. No entanto, todos os tipos primitivos têm um tipo de referência correspondente, por isso, em vez de int podes usar Integer e, em vez de long, podes usar Long.

Pode ajudar olhar para um exemplo de caso de uso de genéricos para começares.


Fonte

Tópico clássico da informática
Editar via GitHub A ligação abre numa nova janela ou separador
Java Exercism

Estás pronto para começar Lista ligada?

Inscreve-te no Exercism para aprenderes e dominares Java com 26 conceitos158 exercícios, e mentoria humana real, tudo grátis.