> For the complete documentation index, see [llms.txt](https://educacion.gitbook.io/programacion/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://educacion.gitbook.io/programacion/exercicios-java/ud6-exercicios/listas.md).

# Listas

1. Empregando o Javascript incrustado na páxina da teoría, realiza as seguintes operacións:
   1. Vacía a lista que mostra por defecto
   2. Inclúe a cidade de "A Coruña" ao principio e a cidade de "Vigo" ao final
   3. Inclúe a cidade de "Lugo" na posición 1 ¿Que pasou coa cidade de "Vigo"?
   4. Inclúe a cidade de "Ourense" na posición 1 ¿Que orde de elementos ten a lista?
   5. Consulta que elemento hai na posición 2.&#x20;
   6. Elimina a cidade de Lugo da lista&#x20;
   7. Elimina a cidade de Ourense e a cidade de Vigo
   8. ¿Como se accede á posición da lista? ¿En que posicións se poden engadir elementos? ¿En que posicións se poden eliminar? ¿Hai limite de elementos a engadir?

2. Implementa unha clase Lista sen empregar clases da familia de collections. Emprega clases xenericas na túa implementación. Para isto:
   1. Define unha clase Nodo. A lista vai a traballar con un conxunto de nodos que vai a conter:
      1. Un elemento xenérico que representa o contido do nodo
      2. Unha referencia ao nodo seguinte, que será un atributo de tipo Nodo
      3. Un constructor que recibe un elemento xenérico
      4. Os getters e os setters correspondentes
   2. Define unha clase lista que vai a traballar con elementos xenéricos. A lista consta de un atributo nodoCabeceira e outro atributo tamaño, que determina o número de elementos da lista.&#x20;
      1. Implementa un **constructor vacío**, que crea unha lista con un nodo de cabeceira nulo e outro e o tamano de 0.
      2. Implementa un **método get(int )** que devolva un elemento xenérico. Ten en conta o seguinte:
         1. Se a posición esta fora de rango, hai que xestionar unha excepción
         2. Recorre a lista ata atopar o elemento da posición para devolvelo
         3. ¿Por que o método get non devolve un Optional? Razoa a túa resposta
      3. Implementa un **método add(ElementoXenerico, int)**, que engada o elemento na posicion indicada, e que devolva un booleano. Ten en conta os seguintes casos:
         1. Posición fora de rango
         2. Elemento Xenérico engadido na posición 0
         3. Elemento Xenérico engadido no resto de posicións.
      4. Implementa un **método remove(ElementoXenerico)**, que elimine o elemento se o atopa e que devolva un booleano. Ten en conta os seguintes casos:
         1. Se non hai elementos na lista, non se pode eliminar
         2. Elemento Xenérico eliminado da posición 0
         3. Elemento Xenérico eliminado do resto de posicións.
      5. Implementa un método **toString()** que mostre o contido da lista
   3. Define unha clase App na que crees unha lista e realices as seguintes operacións:

      1. Inclúe a cidade de "A Coruña" ao principio e a cidade de "Vigo" ao final
      2. Inclúe a cidade de "Lugo" na posición 1 ¿Que pasou coa cidade de "Vigo"?
      3. Inclúe a cidade de "Ourense" na posición 1 ¿Que orde de elementos ten a lista?
      4. Mostra a lista completa
      5. Elimina a cidade de Lugo. Mostra a lista
      6. Elimina a cidade de Santiago. ¿Que pasa?

3. Imaxina que foses a implementar unha lista **doblemente enlazada**, indica que cambios son os que habería que levar a cabo en:
   1. Na estructura do Nodo
   2. No método add
   3. No método remove
   4. No método get

Para facilitar a explicación, podes referirte a NodoAnterior, NodoNovo,  NodoABorrar e NodoSeguinte

4. Imaxina que foses a implementar unha **lista circular**, indica que cambios son os que habería que levar a cabo en:
   1. Na estructura do Nodo
   2. No método add
   3. No método remove
   4. No método get

Para facilitar a explicación, podes referirte a NodoAnterior, NodoNovo, NodoABorrar e NodoSeguinte


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://educacion.gitbook.io/programacion/exercicios-java/ud6-exercicios/listas.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
