Cita:
Iniciado por saciorlux Estoy haciendo un curso y tengo que entregar este ejercicio que me piden lo siguiente.
He realizado lo que he podido y me he quedado bloqueado y no se por donde seguir, lo que pongo en azul más abajo es lo que me falta por hacer:
REQUISITOS:
1.-
Implementar un clase denominada “Enlace” que contenga un elemento
Object y una referencia a otro objeto “Enlace”, según el siguiente diagrama
de clases:
Enlace
----------
Objeto elemento
Enlace siguiente
----------
public Object getElemento()
public Enlace getSiguiente()
public void setElemento(Object elemento)
public void setSiguiente(Enlace siguiente)
2.
Crear la clase “ListaEnlazada” que implemente el interfaz
Enumeration y que represente una lista donde cada nodo
contiene un objeto y la referencia al siguiente nodo
(apoyándose en la clase “Enlace”),
public class ListaEnlazada implements Enumeration {
Enlace cabecera, cola, actual, longitud;
int longitud;
public int numeroElementos()
public boolean esVacia()
public Object elementoActual()
public void insertarAlFinal(Object elemento)
public void reiniciar()
public boolean hasMoreElements()
public Object nextElement()
Descripción de los atributos:
• cabecera: Es un objeto “Enlace” que indica cual es primer nodo
de la lista. Si la lista está vacía será null.
• cola: Representa al último nodo de la lista. Si la lista está vacía
será null.
• actual: La lista enlazada contempla que pueda ser recorrida
secuencialmente. La variable “actual” nos indica cual ha sido el
último nodo accedido a través del método nextElement().
Cuando el valor de “actual” sea null, el objeto a devolver con
nextElement() será el primero de la lista.
• longitud: Número de nodos de la lista.
Descripción de los métodos
• numeroElementos(): Permite obtener el tamaño, es decir la longitud de la lista
• esVacia(). Devuelve un booleano si la lista no contiene objetos.
• elementoActual(): Devuelve el elemento contenido en el objeto Enlace
referenciado por “actual”.
• reiniciar(): Pone la variable “actual” a null. De modo que elementoActual()
devuelve null y nextElement() devuelve el primer elemento.
• hasMoreElements(): Devuelve true si la lista no está vacía y quedan elementos
por recorrer.
• nextElement(): Devuelve el siguiente objeto del elemento actual, avanzando una
posición en la lista.
• insertarAlFinal(): Añade un elemento al final de la lista.
• Se crea un objeto Enlace.
• Si la lista está vacía el nuevo elemento es la cabecera y la cola.
• SI la lista no está vacía:
• Actualiza la referencia “siguiente” de la variable “cola” al nuevo objeto.
• Modifica la referencia “cola”, ya que el nuevo elemento pasa a ser la cola.
• Incrementamos la longitud.
Realizar una clase OperarLista con un método main que opere
con la lista.
• Añadir 5 elementos que sean String �� “uno”, “dos”, “tres”,
“cuatro” y “cinco”
• Recorrer desde el inicio los elementos de la lista secuencialmente
con los métodos de la clase ListaEnlazada, hasMoreElements() y
nextElement()
He conseguido realizar lo siguiente que no se si esta bien pero ya me he quedado estancado y no se como seguir con lo que me falta:
public class Enlace {
private Object elemento;
private Enlace siguiente;
public Enlace (Object n) {
elemento=n;
siguiente=null;
}
public Object getElemento(){
return elemento;
}
public Enlace getSiguiente(){
return siguiente;
}
public void setElemento(Object elemento) {
this.elemento=elemento;
}
public void setSiguiente(Enlace siguiente) {
this.siguiente=siguiente;
}
}
-------------------------------------------------
import java.util.*;
public class ListaEnlazada implements Enumeration {
Enlace cabecera, cola, actual, longitud;
int longitud;
public int numeroElementos() {
}
public boolean esVacia(){
return cabecera==null && cola==null;
}
public Object elementoActual() {
}
public void insertarAlFinal(Object elemento) {
Enlace nuevo=new Enlace (elemento);
if (esVacia()){
cabecera=nuevo;
}
else
{
Enlace actual=cabecera;
while(actual.getSiguiente()!=null) {
actual=actual.getSiguiente();
}
actual.setSiguiente(nuevo);
}
}
{
}
public void reiniciar(){
}
public boolean hasMoreElements() {
}
public Object nextElement() {
}
}
public int numeroElementos()
{
return longitud;
}
el metodo insertar lo tienes que cambiar para que cuando inserta sumar uno a la longitud.
public void reiniciar()
{
longitud = 0;
cabecera, cola, actual = null;
}
public boolean hasMoreElements()
{
return (actual.getSiguiente() != null);
}
public Object nextElement()
{
Object result;
result = actual.getElemento();
actual = actual.getSiguiente();
return result;
}
Para preguntar si es vacia tambien puedes preguntar si la longitud es cero.