[ Foro de Java ]

Lista simple

26-May-2021 18:19
Invitado (JOSE LUIS)
1 Respuestas

a) Generar un método que inserte elementos en una lista simple donde del
lado izquierdo queden los números menores a 50 y del lado derecho los
mayores o iguales a 50.
Por ejemplo si los números fueran los siguientes int
vec[]={80,13,60,22,50,40,71,33,90,85,45} la lista debería de quedar de la
siguiente forma: 45 33 40 22 13 80 60 50 71 90 85
b) Generar un método que permita construir una lista a partir de una existente,
que contenga solo números pares; de tal forma que este método recibe
como argumento el inicio de una lista.


08-Jun-2021 04:18
Franco Garcia

public class Main
{
public static void main(String[] args)
{
class ListaSimple implements Iterable<Integer>
       {
           class Nodo
           {
               int valor;
               Nodo siguiente = null;
           }
           private Nodo raiz;
           
           public ListaSimple()
           {
               raiz = null;
           }
           
           public void insertar(int valor)
           {
               Nodo nuevo = new Nodo();
               nuevo.valor = valor;
               if(raiz == null)
               {
                   raiz = nuevo;
               }
               else
               {
                   if(valor < 50)
                   {
                       nuevo.siguiente = raiz;
                       raiz = nuevo;
                   }
                   else
                   {
                       Nodo recorre = raiz;
                       //Nodo anterior = recorre;
                       while(recorre.siguiente != null)
                       {
                           recorre = recorre.siguiente;
                       }
                       recorre.siguiente = nuevo;
                   }
               }
           }
           private void obtener_nodo(Nodo nodo)
           {
               if(nodo != null)
               {
                   System.out.println(nodo.valor);
                   obtener_nodo(nodo.siguiente);
               }
           }
           public void mostrar_lista()
           {
               obtener_nodo(raiz);
           }
           private boolean nodo_vacio(Nodo nodo)
           {
               if(nodo == null)
               {
                   return true;
               }
               return false;
           }
           
           @Override
           public Iterator<Integer> iterator()
           {
               Iterator<Integer> iterador = new Iterator<Integer>()
               {
                Nodo recorre = raiz;
               
                   @Override
                   public boolean hasNext()
                   {
                    return (!nodo_vacio(recorre));
                   }
                   @Override
                   public Integer next()
                   {
                       int valor = recorre.valor;
                       recorre = recorre.siguiente;
                       return valor;
                   }
               };
               return iterador;
               
           }
           
           public ListaSimple insertar_lista__pares(ListaSimple lista)
           {
               if(lista != null)
               {
                ListaSimple lista_nueva = new ListaSimple();
                for(int numero : lista)
                {
                if(numero%2 == 0)
                {
                lista_nueva.insertar(numero);
                }
                }
                return lista_nueva;
               }
               return null;
           }
       }
       
       // la lista debería de quedar de la
       // siguiente forma: 45 33 40 22 13 80 60 50 71 90 85
       int vec[]={80,13,60,22,50,40,71,33,90,85,45};
       
       ListaSimple lista = new ListaSimple();
       
       for(int numero : vec)
       {
           lista.insertar(numero);
       }
       
       // prueba con el metodo mostrar que creamos
       System.out.println("\nMostramos lista con el metodo creado\n");
       lista.mostrar_lista(); // (aplicamos recursividad)
       System.out.println("\nRecorremos la misma lista, esta vez con el iterador que implementamos\n");
       for(int numero : lista) // Utilizamos el iterador que implementamos en la clase para recorrer la coleccion.
       {
           System.out.println(numero);
       }
       
       // utilizamos el metodo creado y le pasamos como parametra la misma lista ya echa;
       
       ListaSimple lista_pares = lista.insertar_lista__pares(lista);
       
       System.out.println("\n RECORREMOS LISTA DE PARES\n");
       
       for(int numero : lista_pares)
       {
        System.out.println(numero);
       }
}
}
/*
No se si era esto lo que pedias, espero que te sirva. Saludos y buena suerte.
*/






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)