Clase 5 Listas Abiertas
Clase 5 Listas Abiertas
Clase 5 Listas Abiertas
DOCENTE:
RAMÓN TOALA DUEÑAS
Entender como funciona una Lista Abierta y como aplicar sus reglas al
desarrollar los diferentes métodos en clases modelos.
cebecera
La estructura de almacenamiento de cada nodo de la lista es igual a la utilizada en las otras estructuras:
public class Nodo { // Métodos get y set para los atributos.
private int valor; // Variable o lista de variables para guardar datos. public int getValor() { Recuerde que
private Nodo sig; // Atributo para hacer referencia al nodo siguiente. return valor; los métodos
El atributo valor es un modelo que puede ser reemplazado por otros atributos, el } Get y Set
atributo Sig será quien almacene la referencia a la siguiente variable sin nombre, public void setValor(int valor) { sirven para
observe que este atributo es del mismo tipo de la clase Nodo this.valor = valor; extraer e
} insertar
// Métoso constructor que inicializamos el valor de las variables. public Nodo getSig() { valores a cada
public void Nodo(){ Recuerde que los métodos constructores sirven para return sig; atributo de la
this.valor = 0; inicializar los atributos, así valor tomará cero y Sig } clase porque
this.sig = null; tomará null que significa último de la estructura public void setSig(Nodo sig) { son privados
} this.sig = sig;
}
}
Desarrollo de Listas Abiertas
Una vez que se tiene la clase Nodo, se crea la clase Lista que podrá contener una diversidad de métodos de ingresos, recorridos y estracciones:
public class Lista { public void agregarAlFinal(int valor){
private Nodo cabecera; Nodo nuevo = new Nodo();
public void Lista(){ nuevo.setValor(valor);
cabecera = null; if (esVacia()) {
cabecera = nuevo; aux tomara la referencia de la primera variable
}
} else{ dinámica y llegará hasta la última de la lista (la
public boolean esVacia(){ que tiene null)
return cabecera == null; Nodo aux = cabecera;
Para recorrer toda la estructura
} // Recorre la lista hasta llegar al ultimo nodo
se utiliza la variable aux que
avanzará mientras la referencia while(aux.getSig() != null){
Este algoritmo es similar al utilizado por
la Pila porque agrega los nuevos nodos al sea diferente de null aux = aux.getSig (); Proceso de avanzar a la siguiente variable
principio de la lista, se considera el }
método de amarre más fácil. // Agrega el nuevo nodo al final de la lista.
public void agregarAlInicio(int valor){ aux.setSig(nuevo);
Nodo nuevo = new Nodo(); }
nuevo.setValor(valor); }
if (esVacia()) {
cabecera = nuevo;
} else{
// Une el nuevo nodo con la lista existente.
nuevo.setSig(cabecera);
// Renombra al nuevo nodo como el inicio de la lista.
cabecera = nuevo;
}
}
INSERCIÓN DE ELEMENTOS EN UNA LISTA ABIERTA
Esta posibilidad de inserción es igual a la utilizada por las listas con reglas Pila:
Cabecera
1
Por ejemplo, para acceder al valor y la dirección que cabecera.getValor(); //esto devuelve 11
contiene la primera variable dinámica se lo haría así: cabecera.getSig(); //esto devuelve 2