= LISTAS=
Una lista es una
estructura de datos homogénea y dinámica,
que va a estar formada por una secuencia de elementos, donde cada uno de ellos
va seguido de otro o de ninguno.
Homogénea: Todos los
elementos que la forman o tienen el mismo tipo base.
Dinámica: Puede
crecer o decrecer en tiempo de ejecución según nuestras necesidades. Dos listas
pueden ser diferentes si:
No tienen el mismo
número de elementos.
Operaciones basicas de Listas:
- Añadir o insertar elementos
- Buscar o localizar elementos
- Borrar Elementos
- Moverse a través de una lista anterior, siguiente, primero.
Enseguida les mostrare el código de una como hacer un programa sobre listas.
* Programa para llevar acabo una Lista *
=Diagrama UML=
Como se darán cuenta seguiremos utilizando la clase Nodo y crearemos una clase llamada Lista con sus atributos y procesos a realizar.
package Dicknersito; // nombre de nuestro paquete
import
javax.swing.JOptionPane;
public class Lista // nombre de nuestra clase
{
private Nodo
inicio;
Lista()
{
inicio=null;
}
public Nodo
getInicio()
{
return inicio;
}
public void
setInicio(Nodo inicio)
{
this.inicio =
inicio;
}
public Lista
InsertarInicio(String informacion)
{
Nodo nuevo;
nuevo= new
Nodo(informacion); // quiere decir crear nuevo nodo o elemento
nuevo.setEnlace(getInicio()); //aquí quiere decir enlazar nuevo al frente de la lista
setInicio(nuevo); //mueve inicio y apunta al nuevo nodo
return
this; //devuelve la referencia del objeto lista
}
public Lista
InsertarFinal (String informacion) //este metodo funciona si por lo menos la lista tiene un nodo
{
Nodo ultimo;
ultimo=inicio; //ultimo se inicializa al comienza de la lista
while(ultimo.getEnlace() !=null) //recorrido para buscar el ultimo nodo
{
ultimo=ultimo.getEnlace();//ultimo toma la dirección del nodo siguiente
}
ultimo.setEnlace(new Nodo (informacion)); //se crea el nuevo nodo después del ultimo
return this;
}
public Lista
InsertarAntes(String nombre, String ref) //aquí se utilizan parámetros
{
Nodo nuevo,
actual, anterior= null;
boolean
esta=true;
actual=inicio;//vamos a recorrer la lista con actual
while
(!actual.getEnlace().equals(ref)&& esta) //para comparar dos cadenas
{
if(actual.getEnlace()!=null)
{
anterior=actual;
actual=actual.getEnlace();
}
else
{
esta=false;
}
}
if(esta)
{
if(inicio==actual) //vamos a insertar antes del primer nodo
{
nuevo=new Nodo(nombre, inicio); //constructor
inicio=nuevo;
}
else
{
nuevo=new Nodo(nombre, actual); //constructor
anterior.setEnlace(nuevo);
}
}
return this;
}
public Lista
insertaDespues (String nombre, String ref)
{
Nodo
nuevo,actual=null;
boolean
esta=true;
actual=inicio; //es esencial en todo programa
while(! actual.getInformacion().equals(ref)&&
esta)
{
if(actual.getEnlace() !=null)
actual
=actual.getEnlace();
else
{
esta=false;
}
if(esta)
{
nuevo=new Nodo (nombre, actual.getEnlace());
actual.setEnlace(nuevo);
}
}
return this;
}
public String
eliminaInicio()
{
Nodo x=inicio;
inicio=inicio.getEnlace(); //borrado logico
return
x.getInformacion();
}
public String
eliminaFinal()//quitar de la lista l ultimo nodo
{
Nodo
ultimo,anterior=null;
ultimo=inicio;
while(ultimo.getEnlace()!=null)
{
anterior=ultimo;
ultimo=ultimo.getEnlace();
}
if(inicio.getEnlace()==null)
{
inicio=null;
}
else
{
anterior.setEnlace(null); //borrado logico
}
return
ultimo.getInformacion();
}
public void
imprimir()
{
String
cadena="";
Nodo q=inicio;
int i=1;
while(q !=null)
{
cadena+="\n"+i+".
"+q.getInformacion();
q=q.getEnlace();
i++;
}
JOptionPane.showMessageDialog(null, cadena,"Nodos de la
lista",JOptionPane.PLAIN_MESSAGE);
}
public String eliminaX (String x)
{
Nodo actual, anterior =null;
boolean
esta=true;
actual=inicio;
while(!actual.getInformacion().equals(x)&& esta)
{
if(actual.getEnlace()!=null)
{
anterior=actual;
actual.setEnlace(actual.getEnlace());
}
else
esta=false;
}
if(esta)
{
anterior.setEnlace(actual);//borrado logico
return
actual.getInformacion();
}
else
return "
";
}
}
NOTA:
Como se han de dar cuenta aparecen mucho la palabra Get y Set en breve les daré una pequeña explicación del por que aparecen mucho.
Get es un método que
tiene un tipo de retorno que se relaciona con el tipo de variable miembro
asociada. Los métodos get generalmente no toma ningún parámetro.
Set igual es un Método que tiene un tipo de retorno
"void" y toma un parámetro del tipo adecuado para asignar a la
variable miembro asociada.
Otra nota es que tambien aparece equals se han de preguntar para que sirve o que es lo que hace, bueno equals al igual que Get y Set es un Método el cual sirve para comparar ya sea 2 cadenas o 2 String.
Existen dos tipos de borrados: lógico y físico.
Publicado por: Dickner Steven Barrios & Yenifer Mina Castillo