> 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/colas.md).

# Colas

1. Implementa unha clase Cola sen empregar clases da familia de collections. Emprega clases xenéricas na túa implementación. Para isto:
   1. Reutiliza a clase **Nodo** que definiches no exercicio 2 de listas
   2. Crea unha clase **Cola** que vai a traballar con elementos xenéricos. A clase Cola consta de un atributo tamaño, un Nodo primeiro e un Nodo último.
      1. Implementa un **constructor vacío** que establace os nodos primeiro e ultimo coma NULL e o tamaño igual a 0.
      2. Implenta un método **add(E**) que engade o elemento E ao final da cola. Ten en conta que:
         1. Se a cola está vacía, a primeira inserción determina o primeiro e ultimo elemento
         2. Se a cola contén elementos, as insercións implican recuperar o ultimo elemento, establecer coma o seu seguinte o novo, e establecer como último elemento da cola o novo
      3. Implementa un método **peek()** que devolve o primer elemento da cola sen eliminalo
      4. Implementa un método **poll()** que devolve e elimina o primer elemento da cola. Ten en conta que para eliminar o primeiro elemento, basta con que o primeiro da cola pasa a ser o seguinte do primero.
      5. Implementa un método **size()**, que devolve o número de elementos da cola.
      6. Implementa un método **toString()**, que devolve unha cadena co número de elementos da Cola
   3. Implenta unha clase **Persona** que ten un atributo nome, un constructor, getters, setters e un método toString()
   4. Implementa unha clase **App** na que instancies un obxecto de tipo Cola. Ademais fai o seguinte:
      1. Crea catro persoas, engade as catro persoas a cola.&#x20;
      2. Mostra o contido da cola e o seu tamaño
      3. Recupera o primeiro elemento e mostrao por pantalla. Mostra o contido da cola.
      4. Desencola os tres primeiros elementos. Despois de desencolar cada un, mostra por pantalla o contido da cola
2. Imaxina que foses a implementar unha cola **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 **poll()**
   4. No método **peek()**

   Para facilitar a explicación, podes referirte a NodoAnterior, NodoNovo,  NodoABorrar e NodoSeguinte
3. Imaxina que foses a implementar unha **cola tipo Deque** con doble enlace, 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 **poll()**
   4. No método **peek()**

   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/colas.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.
