Вы находитесь на странице: 1из 55

:: Listas Circulares en JAVA ::

Descripción: El siguiente código realizado en Java muestra la estructura y funcionamiento


de las Listas Circulares Simples.
Éstas listas poseen nodos simples. Tienen como característica que el último nodo hace
referencia como siguiente elemento al primer nodo de la lista, generando así una secuencia
circular. Los nuevos nodos pueden ser ingresados al principio o al final de la lista, pero se
debe seguir manteniendo la estructura circular. La impresión de la lista se realiza en orden
ascendente, desde el primer elemento hasta el último.
El sistema se compone de 3 clases:
 ListaCircular
 NodoSimple
 AplicaCircular

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

:: Listas Tipo Pila en Java ::


Descripción: El siguiente código realizado en Java muestra la estructura y funcionamiento
de las Listas Tipo Pila o también denominadas LIFO (Last In First Out).
Éstas listas tienen como característica que sus elementos se van apilando uno encima de
otro, de forma análoga a la construcción de una torre. Las implicación de esta estructura es
que únicamente se puede añadir o extraer los elementos que se encuentran en la cima de
la pila, es así que el último elemento en entrar será el primero en salir.
El sistema se compone de 3 clases:
 Pila
 Nodo
 Aplicacion

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:

Valor: valor del dato a guardar.


Enlace: apunta a la dirección en memoria del siguiente nodo.

Lista simplemente enlazada:

Características:

 El último nodo de la lista no apunta a ningún a ninguno (null).


 Se accede a la lista mediante el primer nodo o también llamado inicio de la
lista.
 No tiene acceso aleatorio es decir para acceder a un valor se debe recorrer
toda la lista.

Operaciones básicas:

 agregar (valor): agrega el valor al final de la lista.


 insertar (referencia, valor): inserta el valor después del valor de referencia en la
lista.
 remover (referencia): elimina el nodo con el valor que coincida con la
referencia.
 editar (referencia): actualiza el valor de nodo con el valor que coincida con la
referencia.
 esVacia (): retorna true si la lista está vacía, false en caso contrario.
 buscar (valor): retorna la true si el elemento existe en la lista, false caso
contrario.
 eliminar(): elimina la lista
 listar (): imprime en pantalla los elementos de la lista.
Programa Java:

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;
}

// Métodos get y set para los atributos.

public int getValor() {


return valor;
}

public void setValor(int valor) {


this.valor = valor;
}

public Nodo getSiguiente() {


return siguiente;
}

public void setSiguiente(Nodo siguiente) {


this.siguiente = siguiente;
}
}
Clase Lista.java
/**
* Clase que define las operaciones básicas que debe tener una lista
simple.
* @author xavier
*/
public class Lista {
// Puntero que indica el inicio de la lista o conocida tambien
// como cabeza de la lista.
private Nodo inicio;
// Variable para registrar el tamaño de la lista.
private int tamanio;
/**
* Constructor por defecto.
*/
public void Lista(){
inicio = null;
tamanio = 0;
}
/**
* Consulta si la lista esta vacia.
* @return true si el primer nodo (inicio), no apunta a otro nodo.
*/
public boolean esVacia(){
return inicio == null;
}
/**
* Consulta cuantos elementos (nodos) tiene la lista.
* @return numero entero entre [0,n] donde n es el numero de
elementos
* que contenga la lista.
*/
public int getTamanio(){
return tamanio;
}
/**
* Agrega un nuevo nodo al final de la lista.
* @param valor a agregar.
*/
public void agregarAlFinal(int valor){
// Define un nuevo nodo.
Nodo nuevo = new Nodo();
// Agrega al valor al nodo.
nuevo.setValor(valor);
// Consulta si la lista esta vacia.
if (esVacia()) {
// Inicializa la lista agregando como inicio al nuevo
nodo.
inicio = nuevo;
// Caso contrario recorre la lista hasta llegar al ultimo nodo
//y agrega el nuevo.
} else{
// Crea ua copia de la lista.
Nodo aux = inicio;
// Recorre la lista hasta llegar al ultimo nodo.
while(aux.getSiguiente() != null){
aux = aux.getSiguiente();
}
// Agrega el nuevo nodo al final de la lista.
aux.setSiguiente(nuevo);
}
// Incrementa el contador de tamaño de la lista
tamanio++;
}
/**
* Agrega un nuevo nodo al inicio de la lista.
* @param valor a agregar.
*/
public void agregarAlInicio(int valor){
// Define un nuevo nodo.
Nodo nuevo = new Nodo();
// Agrega al valor al nodo.
nuevo.setValor(valor);
// Consulta si la lista esta vacia.
if (esVacia()) {
// Inicializa la lista agregando como inicio al nuevo
nodo.
inicio = nuevo;
// Caso contrario va agregando los nodos al inicio de la
lista.
} else{
// Une el nuevo nodo con la lista existente.
nuevo.setSiguiente(inicio);
// Renombra al nuevo nodo como el inicio de la lista.
inicio = nuevo;
}
// Incrementa el contador de tamaño de la lista.
tamanio++;
}
/**
* Inserta un nuevo nodo despues de otro, ubicado por el valor que
contiene.
* @param referencia valor del nodo anterios al nuevo nodo a
insertar.
* @param valor del nodo a insertar.
*/
public void insertarPorReferencia(int referencia, int valor){
// Define un nuevo nodo.
Nodo nuevo = new Nodo();
// Agrega al valor al nodo.
nuevo.setValor(valor);
// Verifica si la lista contiene elementos
if (!esVacia()) {
// Consulta si el valor existe en la lista.
if (buscar(referencia)) {
// Crea ua copia de la lista.
Nodo aux = inicio;
// Recorre la lista hasta llegar al nodo de
referencia.
while (aux.getValor() != referencia) {
aux = aux.getSiguiente();
}
// Crea un respaldo de la continuación de la lista.
Nodo siguiente = aux.getSiguiente();
// Enlaza el nuevo nodo despues del nodo de
referencia.
aux.setSiguiente(nuevo);
// Une la continuacion de la lista al nuevo nodo.
nuevo.setSiguiente(siguiente);

// Incrementa el contador de tamaño de la lista.


tamanio++;
}
}
}
/**
* Inserta un nuevo nodo despues en una posición determinada.
* @param posicion en la cual se va a insertar el nuevo nodo.
* @param valor valor del nuevo nodo de la lista.
*/
public void insrtarPorPosicion(int posicion, int valor){
// Verifica si la posición ingresada se encuentre en el rango
// >= 0 y <= que el numero de elementos del la lista.
if(posicion>=0 && posicion<=tamanio){
Nodo nuevo = new Nodo();
nuevo.setValor(valor);
// Consulta si el nuevo nodo a ingresar va al inicio de la
lista.
if(posicion == 0){
// Inserta el nuevo nodo al inicio de la lista.
nuevo.setSiguiente(inicio);
inicio = nuevo;
}
else{
// Si el nodo a inserta va al final de la lista.
if(posicion == tamanio){
Nodo aux = inicio;
// Recorre la lista hasta llegar al ultimo nodo.
while(aux.getSiguiente() != null){
aux = aux.getSiguiente();
}
// Inserta el nuevo nodo despues de del ultimo.
aux.setSiguiente(nuevo);
}
else{
// Si el nodo a insertar va en el medio de la
lista.
Nodo aux = inicio;
// Recorre la lista hasta llegar al nodo anterior
// a la posicion en la cual se insertara el nuevo
nodo.
for (int i = 0; i < (posicion-1); i++) {
aux = aux.getSiguiente();
}
// Guarda el nodo siguiente al nodo en la posición
// en la cual va a insertar el nevo nodo.
Nodo siguiente = aux.getSiguiente();
// Inserta el nuevo nodo en la posición indicada.
aux.setSiguiente(nuevo);
// Une el nuevo nodo con el resto de la lista.
nuevo.setSiguiente(siguiente);
}
}
// Incrementa el contador de tamaño de la lista.
tamanio++;
}
}
/**
* Obtiene el valor de un nodo en una determinada posición.
* @param posicion del nodo que se desea obtener su valor.
* @return un numero entero entre [0,n-1] n = numero de nodos de
la lista.
* @throws Exception
*/
public int getValor(int posicion) throws Exception{
// Verifica si la posición ingresada se encuentre en el rango
// >= 0 y < que el numero de elementos del la lista.
if(posicion>=0 && posicion<tamanio){
// Consulta si la posicion es el inicio de la lista.
if (posicion == 0) {
// Retorna el valor del inicio de la lista.
return inicio.getValor();
}else{
// Crea una copia de la lista.
Nodo aux = inicio;
// Recorre la lista hasta la posición ingresada.
for (int i = 0; i < posicion; i++) {
aux = aux.getSiguiente();
}
// Retorna el valor del nodo.
return aux.getValor();
}
// Crea una excepción de Posicion inexistente en la lista.
} else {
throw new Exception("Posicion inexistente en la lista.");
}
}
/**
* Busca si existe un valor en la lista.
* @param referencia valor a buscar.
* @return true si existe el valor en la lista.
*/
public boolean buscar(int referencia){
// Crea una copia de la lista.
Nodo aux = inicio;
// Bandera para indicar si el valor existe.
boolean encontrado = false;
// Recorre la lista hasta encontrar el elemento o hasta
// llegar al final de la lista.
while(aux != null && encontrado != true){
// Consulta si el valor del nodo es igual al de
referencia.
if (referencia == aux.getValor()){
// Canbia el valor de la bandera.
encontrado = true;
}
else{
// Avansa al siguiente. nodo.
aux = aux.getSiguiente();
}
}
// Retorna el resultado de la bandera.
return encontrado;
}
/**
* Consulta la posición de un elemento en la lista
* @param referencia valor del nodo el cual se desea saber la
posición.
* @return un valor entero entre [0,n] que indica la posición del
nodo.
* @throws Exception
*/
public int getPosicion(int referencia) throws Exception{
// Consulta si el valor existe en la lista.
if (buscar(referencia)) {
// Crea una copia de la lista.
Nodo aux = inicio;
// COntado para almacenar la posición del nodo.
int cont = 0;
// Recoore la lista hasta llegar al nodo de referencia.
while(referencia != aux.getValor()){
// Incrementa el contador.
cont ++;
// Avansa al siguiente. nodo.
aux = aux.getSiguiente();
}
// Retorna el valor del contador.
return cont;
// Crea una excepción de Valor inexistente en la lista.
} else {
throw new Exception("Valor inexistente en la lista.");
}
}
/**
* Actualiza el valor de un nodo que se encuentre en la lista
ubicado
* por un valor de referencia.
* @param referencia valor del nodo el cual se desea actualizar.
* @param valor nuevo valor para el nodo.
*/
public void editarPorReferencia(int referencia, int valor){
// Consulta si el valor existe en la lista.
if (buscar(referencia)) {
// Crea ua copia de la lista.
Nodo aux = inicio;
// Recorre la lista hasta llegar al nodo de referencia.
while(aux.getValor() != referencia){
aux = aux.getSiguiente();
}
// Actualizamos el valor del nodo
aux.setValor(valor);
}
}
/**
* Actualiza el valor de un nodo que se encuentre en la lista
ubicado
* por su posición.
* @param posicion en la cual se encuentra el nodo a actualizar.
* @param valor nuevo valor para el nodo.
*/
public void editarPorPosicion(int posicion , int valor){
// Verifica si la posición ingresada se encuentre en el rango
// >= 0 y < que el numero de elementos del la lista.
if(posicion>=0 && posicion<tamanio){
// Consulta si el nodo a eliminar es el primero.
if(posicion == 0){
// Alctualiza el valor delprimer nodo.
inicio.setValor(valor);
}
else{
// En caso que el nodo a eliminar este por el medio
// o sea el ultimo
Nodo aux = inicio;
// Recorre la lista hasta lleger al nodo anterior al
eliminar.
for (int i = 0; i < posicion; i++) {
aux = aux.getSiguiente();
}
// Alctualiza el valor del nodo.
aux.setValor(valor);
}
}
}
/**
* Elimina un nodo que se encuentre en la lista ubicado
* por un valor de referencia.
* @param referencia valor del nodo que se desea eliminar.
*/
public void removerPorReferencia(int referencia){
// Consulta si el valor de referencia existe en la lista.
if (buscar(referencia)) {
// Consulta si el nodo a eliminar es el pirmero
if (inicio.getValor() == referencia) {
// El primer nodo apunta al siguiente.
inicio = inicio.getSiguiente();
} else{
// Crea ua copia de la lista.
Nodo aux = inicio;
// Recorre la lista hasta llegar al nodo anterior
// al de referencia.
while(aux.getSiguiente().getValor() != referencia){
aux = aux.getSiguiente();
}
// Guarda el nodo siguiente del nodo a eliminar.
Nodo siguiente = aux.getSiguiente().getSiguiente();
// Enlaza el nodo anterior al de eliminar con el
// sguiente despues de el.
aux.setSiguiente(siguiente);
}
// Disminuye el contador de tamaño de la lista.
tamanio--;
}
}
/**
* Elimina un nodo que se encuentre en la lista ubicado
* por su posición.
* @param posicion en la cual se encuentra el nodo a eliminar.
*/
public void removerPorPosicion(int posicion){
// Verifica si la posición ingresada se encuentre en el rango
// >= 0 y < que el numero de elementos del la lista.
if(posicion>=0 && posicion<tamanio){
// Consulta si el nodo a eliminar es el primero
if(posicion == 0){
// Elimina el primer nodo apuntando al siguinte.
inicio = inicio.getSiguiente();
}
// En caso que el nodo a eliminar este por el medio
// o sea el ultimo
else{
// Crea una copia de la lista.
Nodo aux = inicio;
// Recorre la lista hasta lleger al nodo anterior al
eliminar.
for (int i = 0; i < posicion-1; i++) {
aux = aux.getSiguiente();
}
// Guarda el nodo siguiente al nodo a eliminar.
Nodo siguiente = aux.getSiguiente();
// Elimina la referencia del nodo apuntando al nodo
siguiente.
aux.setSiguiente(siguiente.getSiguiente());
}
// Disminuye el contador de tamaño de la lista.
tamanio--;
}
}
/**
* Elimina la lista
*/
public void eliminar(){
// Elimina el valor y la referencia a los demas nodos.
inicio = null;
// Reinicia el contador de tamaño de la lista a 0.
tamanio = 0;
}
/**
* Mustra en pantalla los elementos de la lista.
*/
public void listar(){
// Verifica si la lista contiene elementoa.
if (!esVacia()) {
// Crea una copia de la lista.
Nodo aux = inicio;
// Posicion de los elementos de la lista.
int i = 0;
// Recorre la lista hasta el final.
while(aux != null){
// Imprime en pantalla el valor del nodo.
System.out.print(i + ".[ " + aux.getValor() + " ]" + "
-> ");
// Avanza al siguiente nodo.
aux = aux.getSiguiente();
// Incrementa el contador de la posión.
i++;
}
}
}
}
Clase Main.java
public class Main {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
Lista lista = new Lista();

System.out.println("<<-- Ejemplo de lista simple -->>\n");

// Agregar al final de la lista


lista.agregarAlFinal(12);
lista.agregarAlFinal(15);
lista.agregarAlFinal(9);
// Agregar in inicio de la lista
lista.agregarAlInicio(41);
lista.agregarAlInicio(6);

System.out.println("<<-- Lista -->>");


lista.listar();

System.out.println("\n\n<<-- Tamaño -->");


System.out.println(lista.getTamanio());

System.out.println("\n<<-- Obtener el valor del nodo en la


posicion 3 -->>");
System.out.println(lista.getValor(3));

System.out.println("\nInsrta un nodo con valor 16 despues del


15");
lista.insertarPorReferencia(15, 16);
lista.listar();
System.out.print(" | Tamaño: ");
System.out.println(lista.getTamanio());

System.out.println("\n\nInsrta un nodo con valor 44 en la


posición 3");
lista.insrtarPorPosicion(3, 44);
lista.listar();
System.out.print(" | Tamaño: ");
System.out.println(lista.getTamanio());

System.out.println("\nActualiza el valor 12 del tercer nodo


por 13");
lista.editarPorReferencia(12, 13);
lista.listar();
System.out.print(" | Tamaño: ");
System.out.println(lista.getTamanio());

System.out.println("\nActualiza el valor nodo en la posición 0


por 17");
lista.editarPorPosicion(0, 17);
lista.listar();
System.out.print(" | Tamaño: ");
System.out.println(lista.getTamanio());

System.out.println("\nElimina el nodo con el valor 41");


lista.removerPorReferencia(41);
lista.listar();
System.out.print(" | Tamaño: ");
System.out.println(lista.getTamanio());

System.out.println("\nElimina el nodo en la posición 4");


lista.removerPorPosicion(4);
lista.listar();
System.out.print(" | Tamaño: ");
System.out.println(lista.getTamanio());

System.out.println("\nConsulta si existe el valor 30");


System.out.println(lista.buscar(30));

System.out.println("\nConsulta la posicion del valor 9");


System.out.println(lista.getPosicion(9));

System.out.println("\nElimina la lista");
lista.eliminar();

System.out.println("\nConsulta si la lista está vacia");


System.out.println(lista.esVacia());

System.out.println("\n\n<<-- Fin de ejemplo lista simple --


>>");
}
}

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ºque 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ºque verifike si esta ordenada.
9º que invierta la lista.
10º que buske un dato el la lista recursivamente.
11ºque elimine un dato recursivamente.
12ºque 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",J
OptionPane.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",J
OptionPane.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",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);
}

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",J
OptionPane.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",J
OptionPane.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",J
OptionPane.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,acum
ulador);
}
}
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

Вам также может понравиться