Академический Документы
Профессиональный Документы
Культура Документы
Clase: AplicaCircular
Clase: ListaCircular
Clase: NodoSimple
Clase: Principal
:: Listas Dobles en JAVA ::
Descripción: El siguiente código realizado en Java muestra la estructura y funcionamiento
de las Listas Doblemente Enlazadas.
Éstas listas tienen como característica que poseen nodos dobles, que guardan referencias
de un nodo anterior y siguiente. Los elementos pueden ser ingresados al principio o final de
la lista. Se puede recorrer la lista en el sentido hacia adelante o hacia atrás, permitiendo
tener la impresión en orden normal u orden inverso.
El sistema se compone de 3 clases y la Principal que contiene al método main:
ListaDoble
NodoDoble
AplicaDoble
Clase: AplicaDoble
Clase: ListaDoble
Clase: NodoDoble
Clase: Principal
Clase: Aplicacion
Clase: Nodo
Clase: Pila
Listas Simples en Java
7/3/2015
39 COMENTARIOS
Las listas son estructuras de datos que permiten tener cierta flexibilidad en su manejo,
pueden crecer o acortarse según se lo requiera, existen varias formas de implementar
una lista en Java en este caso se presenta un ejemplo en código utilizando punteros
mediante la referencia a objetos.
Las listas básicamente se forman del enlace de nodos los cuales funcionan como
contenedores para almacenar el valor y enlace al siguiente nodo.
Estructura de un nodo:
Características:
Operaciones básicas:
Clase Nodo.java
/**
* Clase que define los elementos que debe tener un Nodo de la lista.
* @author xavier
*/
public class Nodo {
// Variable en la cual se va a guardar el valor.
private int valor;
// Variable para enlazar los nodos.
private Nodo siguiente;
/**
* Constructor que inicializamos el valor de las variables.
*/
public void Nodo(){
this.valor = 0;
this.siguiente = null;
}
System.out.println("\nElimina la lista");
lista.eliminar();
/**
*
* xD
*/
public class Principal
{
l1.Ingresar(2);
l1.Ingresar(10);
l1.Ingresar(10);
l1.Ingresar(14);
l1.Ingresar(16);
l1.Ingresar(9);
l1.Ingresar(12);
l1.Visualizar();
l1.Buscar(2);
l1.Buscar(8);
l1.EliminarTodo_Recursivo(10);
l1.Visualizar();
l1.MayoryPosicion();
l1.MenoryRepeticion();
l1.Suma_Recursivo();
l1.SumaPares_Recursivo();
l1.MenoresNumero(15);
package listaenlazadadavid;
/*
xD
*/
package listaenlazadadavid;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
/**
*
* xD
*
*/
public class Lista
{
//Creamos los tipos de nodo
private Nodo primero, ultimo;
}
public void Visualizar()
{
while (p!=null)
{
Salida=Salida+ p.SacarInfo()+"\n";
p=p.SacarSig();
}
if(p.SacarInfo()!=n)
Buscar(n);
Buscar_Recursivo(p.SacarSig(), n);
}
public void Buscar_Recursivo(int n)
{
Buscar_Recursivo(primero,n);
}
public void Eliminar(int n)
{
if(EstaVacia())
return ;
Nodo p=primero; Nodo q=null;
while(p!=null && p.SacarInfo()!=n)
{
q=p;
p=p.SacarSig();
}
if(p==primero)
{
primero=p.SacarSig();
}
else
{
q.Enlace(p.SacarSig());
if(p==ultimo)
ultimo=q;
}
}
public void EliminarTodo(int n)
{
if(EstaVacia())
return;
Nodo p=primero;
while(p!=null)
{
if(p.SacarInfo()==n)
this.Eliminar(n);
p=p.SacarSig();
}
}
public void EliminarTodo_Recursivo(Nodo p,int n)
{
if(p==null)
return ;
if(p.SacarInfo()==n)
Eliminar(n);
EliminarTodo_Recursivo(p.SacarSig(), n);
}
public void EliminarTodo_Recursivo(int n)
{
EliminarTodo_Recursivo(primero,n);
}
public void Suma_Recursivo(Nodo p,int s)
{
if(p==null)
{
JTextArea areaSalida= new JTextArea();
areaSalida.setText("La Suma total es:"+s);
JOptionPane.showMessageDialog(null,areaSalida,"Salida",J
OptionPane.INFORMATION_MESSAGE);
return ;
}
Suma_Recursivo(p.SacarSig(), s+p.SacarInfo());
}
public void Suma_Recursivo( )
{
Suma_Recursivo(primero,0);
}
public int Suma(Nodo p)
{
if(p==null)
return 0;
return p.SacarInfo()+Suma(p.SacarSig());
}
public void SumaDatos()
{
int s=Suma(primero);
}
private int MaximoNumero(Nodo oNodoTemporal, int
numerador)
{
if(oNodoTemporal==null)
{
return ultimo.SacarInfo();
}
if(MaximoNumero(oNodoTemporal.SacarSig(), numerador-
1)<=oNodoTemporal.SacarInfo())
{
return oNodoTemporal.SacarInfo();
}
return
MaximoNumero(oNodoTemporal.SacarSig(),numerador-1);
}
if(p==null)
{
salida=salida+"Dato no encontrado";
}
if(p.SacarInfo()==n)
{
salida=salida+"La posicion del dato es :"+i;
}
p=p.SacarSig();
i++;
}
JTextArea areaSalida= new JTextArea();
areaSalida.setText(salida);
JOptionPane.showMessageDialog(null,areaSalida,"Salida",J
OptionPane.INFORMATION_MESSAGE);
}
if(MinimoNumero(oNodoTemporal.SacarSig(), numerador-
1)>=oNodoTemporal.SacarInfo())
{
return oNodoTemporal.SacarInfo();
}
return
MinimoNumero(oNodoTemporal.SacarSig(),numerador-1);
}
int i=0;
if(EstaVacia())
{
return;
}
Nodo p=primero;
String salida="Resultado:\n";
while (p!=null )
{
if(p.SacarInfo()==n)
{
i++;
}
p=p.SacarSig();
}
if(i==0)
{
salida=salida+"Dato no encontrado";
}
else
{
salida=salida+"Se repite:"+i+" veces";
}
JTextArea areaSalida= new JTextArea();
areaSalida.setText(salida);
JOptionPane.showMessageDialog(null,areaSalida,"Salida",J
OptionPane.INFORMATION_MESSAGE);
}
}
if(oNodoTemporal.SacarInfo()<numero)
{
MenoresNumero(oNodoTemporal.SacarSig(), numero,
acumulador+" , "+oNodoTemporal.SacarInfo());
}
else
{
MenoresNumero(oNodoTemporal.SacarSig(),numero,acum
ulador);
}
}
public void MenoresNumero(int n )
{
MenoresNumero(primero,n,"");
}
l1.Visualizar
l1.MayoryPosicion
l1.MenoryRepeticion
l1.Suma_Recursivo
l1.SumaPares_Recursivo
.MenoresNumero