hola a todos espero que este problema sea de mucha ayuda a mucha gente que esra enpesando en el mundo java
bueno disculpen por lo malo que esta este post es mi segunda 2 que aporto y no me sale muy bien
A MI PAKETE SE LLAMA listaenlazadadavid
les dejo un problema resuelto.
1)implementar una lista enlazada de datos enteros con las funciones basicas y adicionar las sgtes funciones.
1º que calcule el mayor de los datos e indike la posicion en que se encuentre.
2ºke calcule el dato minimo y cuente la cantidad de veces que se repita.
3ºque sume los datos de una lista recursivamente.
4º que sume los datos pares de una lisa recursivamente.
5º que visualize los datos pares de la lista recursivamente.
6º que muestre los numeros primos.
7º que ordene los datos de la lista.
8ºke verifike si esta ordenada.
9º que invierta la lista.
10º que buske un dato el la lista recursivamente.
11ºke elimine un dato recursivamente.
12ºke duplike los datos e la lista y lo almacene en otra lista.aca esta todo los codigos:
// principal de aqui sale todo
package listaenlazadadavid;
/**
*
* xD
*/
public class Principal
{
public static void main(String[] args)
{
Lista l1= new Lista();
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);
}
}
//creas una nueva class
package listaenlazadadavid;
/*
xD
*/
public class Nodo
{//para privado
private int info;
private Nodo sig;
//Creamo el constructor.-El constructor crea objeto
public Nodo(int n)
{//Creamos variables de entrada=info y siguiente=sig
info=n;
sig=null;
}
// sacar el dato info
public int SacarInfo()
{//Con este metodo ya tenemos la variable info
return info;
}
public Nodo SacarSig()
{
return sig;
}
public void Enlace(Nodo g)
{
sig=g;
}
}
//nuevo class todo va toda la lista que esta enumerada arriba.
package listaenlazadadavid;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
/**
*
* xD
*
*/
public class Lista
{
//Creamos los tipos de nodo
private Nodo primero, ultimo;
//Creacion del contructor
public Lista()
{
primero=ultimo=null;
}
// para ver si esta vacia
public boolean EstaVacia()
{
return primero==null;
}
//En este metodo
public void Ingresar(int n)
{ //llamamos a la referencia
Nodo p= new Nodo(n);
//entra if
if(EstaVacia())
primero=ultimo=p;
else
{
ultimo.Enlace(p);
ultimo=p;
}
}
public void Visualizar()
{
Nodo p=primero; String Salida="Datos :\n ";
while (p!=null)
{
Salida=Salida+ p.SacarInfo()+"\n";
p=p.SacarSig();
}
JTextArea areaSalida= new JTextArea();
areaSalida.setText(Salida);
JOptionPane.showMessageDialog(null,areaSalida,"Salida",JOptionPane.INFORMATION_MESSAGE);
}
public void Buscar(int n)
{
if(EstaVacia())
return;
Nodo p=primero;
String salida="Resultado:\n";
while (p!=null && p.SacarInfo()!=n)
{
p=p.SacarSig();
}
if(p==null)
{
salida=salida+"Dato no encontrado";
}
else
{
salida=salida+"Dato encontrado";
}
JTextArea areaSalida= new JTextArea();
areaSalida.setText(salida);
JOptionPane.showMessageDialog(null,areaSalida,"Salida",JOptionPane.INFORMATION_MESSAGE);
}
public void Buscar_Recursivo(Nodo p,int n)
{
if(EstaVacia())
return ;
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",JOptionPane.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);
}
public void BuscarPosicion(int n)
{
if(EstaVacia())
return;
Nodo p=primero;
String salida="Resultado:\n";
int i=0;
while (p!=null)
{
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",JOptionPane.INFORMATION_MESSAGE);
}
public int contadorDeElementos(){
Nodo oNodoTemporal = primero;
int i=0;
while(oNodoTemporal!=null)
{
i++;
oNodoTemporal=oNodoTemporal.SacarSig();
}
return i;
}
public void MayoryPosicion()
{
int maximo=MaximoNumero(primero, contadorDeElementos());
JTextArea areaSalida= new JTextArea();
areaSalida.setText("El numero maximo es :"+maximo+"");
JOptionPane.showMessageDialog(null,areaSalida,"Salida",JOptionPane.INFORMATION_MESSAGE);
BuscarPosicion(maximo);
}
private int MinimoNumero(Nodo oNodoTemporal, int numerador)
{
if(oNodoTemporal==null)
{
return ultimo.SacarInfo();
}
if(MinimoNumero(oNodoTemporal.SacarSig(), numerador-1)>=oNodoTemporal.SacarInfo())
{
return oNodoTemporal.SacarInfo();
}
return MinimoNumero(oNodoTemporal.SacarSig(),numerador-1);
}
public void contadorDeRepeticiones(int n)
{
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",JOptionPane.INFORMATION_MESSAGE);
}
public void MenoryRepeticion()
{
int minimo=MinimoNumero(primero, contadorDeElementos());
JTextArea areaSalida= new JTextArea();
areaSalida.setText("El numero minimo es :"+minimo+"");
JOptionPane.showMessageDialog(null,areaSalida,"Salida",JOptionPane.INFORMATION_MESSAGE);
contadorDeRepeticiones(minimo);
}
public void SumaPares_Recursivo(Nodo p,int s)
{
if(p==null)
{
JTextArea areaSalida= new JTextArea();
areaSalida.setText("La Suma de todos loa pares es:"+s);
JOptionPane.showMessageDialog(null,areaSalida,"Salida",JOptionPane.INFORMATION_MESSAGE);
return ;
}
if(p.SacarInfo()%2==0)
{
SumaPares_Recursivo(p.SacarSig(),p.SacarInfo()+s);
}
else{
SumaPares_Recursivo(p.SacarSig(), s);
}
}
public void SumaPares_Recursivo( )
{
SumaPares_Recursivo(primero,0);
}
private void MenoresNumero(Nodo oNodoTemporal, int numero,String acumulador)
{
if(oNodoTemporal==null)
{
JTextArea areaSalida= new JTextArea();
areaSalida.setText("Los numeros menores de:"+numero+" son :"+acumulador);
JOptionPane.showMessageDialog(null,areaSalida,"Salida",JOptionPane.INFORMATION_MESSAGE);
return ;
}
if(oNodoTemporal.SacarInfo()<numero)
{
MenoresNumero(oNodoTemporal.SacarSig(), numero, acumulador+" , "+oNodoTemporal.SacarInfo());
}
else
{
MenoresNumero(oNodoTemporal.SacarSig(),numero,acumulador);
}
}
public void MenoresNumero(int n )
{
MenoresNumero(primero,n,"");
}
}
bueno ojala entiendan todo corre ala perfeccion lo hize yo mismo con el programa netbeans
este paquete tiene todo estas funciones
l1.Ingresar(2);
l1.Ingresar
l1.Ingresar
l1.Ingresar
l1.Ingresar
l1.Ingresar
l1.Ingresar
l1.Visualizar
l1.Buscar
l1.Buscar
l1.EliminarTodo_Recursivo
l1.Visualizar
l1.MayoryPosicion
l1.MenoryRepeticion
l1.Suma_Recursivo
l1.SumaPares_Recursivo
.MenoresNumero
bueno disculpen por lo malo que esta este post es mi segunda 2 que aporto y no me sale muy bien
A MI PAKETE SE LLAMA listaenlazadadavid
les dejo un problema resuelto.
1)implementar una lista enlazada de datos enteros con las funciones basicas y adicionar las sgtes funciones.
1º que calcule el mayor de los datos e indike la posicion en que se encuentre.
2ºke calcule el dato minimo y cuente la cantidad de veces que se repita.
3ºque sume los datos de una lista recursivamente.
4º que sume los datos pares de una lisa recursivamente.
5º que visualize los datos pares de la lista recursivamente.
6º que muestre los numeros primos.
7º que ordene los datos de la lista.
8ºke verifike si esta ordenada.
9º que invierta la lista.
10º que buske un dato el la lista recursivamente.
11ºke elimine un dato recursivamente.
12ºke duplike los datos e la lista y lo almacene en otra lista.aca esta todo los codigos:
// principal de aqui sale todo
package listaenlazadadavid;
/**
*
* xD
*/
public class Principal
{
public static void main(String[] args)
{
Lista l1= new Lista();
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);
}
}
//creas una nueva class
package listaenlazadadavid;
/*
xD
*/
public class Nodo
{//para privado
private int info;
private Nodo sig;
//Creamo el constructor.-El constructor crea objeto
public Nodo(int n)
{//Creamos variables de entrada=info y siguiente=sig
info=n;
sig=null;
}
// sacar el dato info
public int SacarInfo()
{//Con este metodo ya tenemos la variable info
return info;
}
public Nodo SacarSig()
{
return sig;
}
public void Enlace(Nodo g)
{
sig=g;
}
}
//nuevo class todo va toda la lista que esta enumerada arriba.
package listaenlazadadavid;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
/**
*
* xD
*
*/
public class Lista
{
//Creamos los tipos de nodo
private Nodo primero, ultimo;
//Creacion del contructor
public Lista()
{
primero=ultimo=null;
}
// para ver si esta vacia
public boolean EstaVacia()
{
return primero==null;
}
//En este metodo
public void Ingresar(int n)
{ //llamamos a la referencia
Nodo p= new Nodo(n);
//entra if
if(EstaVacia())
primero=ultimo=p;
else
{
ultimo.Enlace(p);
ultimo=p;
}
}
public void Visualizar()
{
Nodo p=primero; String Salida="Datos :\n ";
while (p!=null)
{
Salida=Salida+ p.SacarInfo()+"\n";
p=p.SacarSig();
}
JTextArea areaSalida= new JTextArea();
areaSalida.setText(Salida);
JOptionPane.showMessageDialog(null,areaSalida,"Salida",JOptionPane.INFORMATION_MESSAGE);
}
public void Buscar(int n)
{
if(EstaVacia())
return;
Nodo p=primero;
String salida="Resultado:\n";
while (p!=null && p.SacarInfo()!=n)
{
p=p.SacarSig();
}
if(p==null)
{
salida=salida+"Dato no encontrado";
}
else
{
salida=salida+"Dato encontrado";
}
JTextArea areaSalida= new JTextArea();
areaSalida.setText(salida);
JOptionPane.showMessageDialog(null,areaSalida,"Salida",JOptionPane.INFORMATION_MESSAGE);
}
public void Buscar_Recursivo(Nodo p,int n)
{
if(EstaVacia())
return ;
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",JOptionPane.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);
}
public void BuscarPosicion(int n)
{
if(EstaVacia())
return;
Nodo p=primero;
String salida="Resultado:\n";
int i=0;
while (p!=null)
{
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",JOptionPane.INFORMATION_MESSAGE);
}
public int contadorDeElementos(){
Nodo oNodoTemporal = primero;
int i=0;
while(oNodoTemporal!=null)
{
i++;
oNodoTemporal=oNodoTemporal.SacarSig();
}
return i;
}
public void MayoryPosicion()
{
int maximo=MaximoNumero(primero, contadorDeElementos());
JTextArea areaSalida= new JTextArea();
areaSalida.setText("El numero maximo es :"+maximo+"");
JOptionPane.showMessageDialog(null,areaSalida,"Salida",JOptionPane.INFORMATION_MESSAGE);
BuscarPosicion(maximo);
}
private int MinimoNumero(Nodo oNodoTemporal, int numerador)
{
if(oNodoTemporal==null)
{
return ultimo.SacarInfo();
}
if(MinimoNumero(oNodoTemporal.SacarSig(), numerador-1)>=oNodoTemporal.SacarInfo())
{
return oNodoTemporal.SacarInfo();
}
return MinimoNumero(oNodoTemporal.SacarSig(),numerador-1);
}
public void contadorDeRepeticiones(int n)
{
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",JOptionPane.INFORMATION_MESSAGE);
}
public void MenoryRepeticion()
{
int minimo=MinimoNumero(primero, contadorDeElementos());
JTextArea areaSalida= new JTextArea();
areaSalida.setText("El numero minimo es :"+minimo+"");
JOptionPane.showMessageDialog(null,areaSalida,"Salida",JOptionPane.INFORMATION_MESSAGE);
contadorDeRepeticiones(minimo);
}
public void SumaPares_Recursivo(Nodo p,int s)
{
if(p==null)
{
JTextArea areaSalida= new JTextArea();
areaSalida.setText("La Suma de todos loa pares es:"+s);
JOptionPane.showMessageDialog(null,areaSalida,"Salida",JOptionPane.INFORMATION_MESSAGE);
return ;
}
if(p.SacarInfo()%2==0)
{
SumaPares_Recursivo(p.SacarSig(),p.SacarInfo()+s);
}
else{
SumaPares_Recursivo(p.SacarSig(), s);
}
}
public void SumaPares_Recursivo( )
{
SumaPares_Recursivo(primero,0);
}
private void MenoresNumero(Nodo oNodoTemporal, int numero,String acumulador)
{
if(oNodoTemporal==null)
{
JTextArea areaSalida= new JTextArea();
areaSalida.setText("Los numeros menores de:"+numero+" son :"+acumulador);
JOptionPane.showMessageDialog(null,areaSalida,"Salida",JOptionPane.INFORMATION_MESSAGE);
return ;
}
if(oNodoTemporal.SacarInfo()<numero)
{
MenoresNumero(oNodoTemporal.SacarSig(), numero, acumulador+" , "+oNodoTemporal.SacarInfo());
}
else
{
MenoresNumero(oNodoTemporal.SacarSig(),numero,acumulador);
}
}
public void MenoresNumero(int n )
{
MenoresNumero(primero,n,"");
}
}
bueno ojala entiendan todo corre ala perfeccion lo hize yo mismo con el programa netbeans
este paquete tiene todo estas funciones
l1.Ingresar(2);
l1.Ingresar
l1.Ingresar
l1.Ingresar
l1.Ingresar
l1.Ingresar
l1.Ingresar
l1.Visualizar
l1.Buscar
l1.Buscar
l1.EliminarTodo_Recursivo
l1.Visualizar
l1.MayoryPosicion
l1.MenoryRepeticion
l1.Suma_Recursivo
l1.SumaPares_Recursivo
.MenoresNumero