[ Foro de Java ]
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.
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.)