1. Escribir
un programa que realice las siguientes tareas:
• Crear una lista enlazada de números
enteros positivos al azar, donde la inserción se realiza por el último nodo.
• Recorrer la lista para mostrar los
elementos por pantalla.
• Eliminar todos los nodos que superen
un valor dado.
Main:
import java.util.Scanner;
public class Main
{
public static int leerEntero(String texto)
{
Scanner leer=new Scanner(System.in);
System.out.println(texto);
int dato=leer.nextInt();
return dato;
}
public static int menu()
{
System.out.println("---Menu---");
System.out.println("1.- Imprimir lista");
System.out.println("2.- Eliminar nodos que superen un valor dado");
System.out.println("3.- Salir");
int seleccion=leerEntero("Seleccione una opción: ");
return seleccion;
}
public static void main(String[] args)
{
Lista coleccion=new Lista();
int opcion;
coleccion.agregarFin(10);
coleccion.agregarFin(55);
coleccion.agregarFin(22);
coleccion.agregarFin(5);
coleccion.agregarFin(7);
coleccion.agregarFin(12);
do
{
opcion=menu();
switch(opcion)
{
case 1:
System.out.println("Lista Ingresada:");
coleccion.imprimir();
break;
case 2:
int exp=leerEntero("Ingrese el numero base para eliminar datos");
coleccion.eliminarLista(exp);
break;
default:
System.out.println("FIN DEL PROGRAMA");
break;
}
}while(opcion!=3);
}
}
Lista:
public class Lista
{
public Nodo inicio;
public Nodo fin;
public Lista()
{
inicio=fin=null;
}
public Nodo devolver(int numero)
{
Nodo aux=inicio;
int cont=1;
while(contexp)
{
inicio=fin=null;
}
else
{
if(inicio.getDato()>exp)
{
inicio=inicio.getSiguiente();
}
else
{
Nodo anterior=inicio;
Nodo siguiente=inicio.getSiguiente();
while(anterior!=null)
{
if(anterior.getDato()>exp)
{
eliminarNodo(anterior.getDato());
}
anterior=anterior.getSiguiente();
}
}
}
}
}
}
public void eliminarNodo(int info)
{
if(inicio!=null)
{
if(inicio==fin&&inicio.getDato()==info)
{
inicio=fin=null;
}
else
{
if(inicio.getDato()==info)
{
inicio=inicio.getSiguiente();
}
else
{
Nodo anterior=inicio;
Nodo siguiente=inicio.getSiguiente();
while(siguiente!=null&&siguiente.getDato()!=info)
{
anterior=siguiente;
siguiente=siguiente.getSiguiente();
}
if(siguiente!=null)
{
anterior.setSiguiente(siguiente.getSiguiente());
if(siguiente==fin)
{
fin=anterior;
}
}
}
}
}
}
}
Nodo:
Ejecucion en consola:
public class Nodo
{
private int dato;
private Nodo anterior;
private Nodo siguiente;
public Nodo(int dato, Nodo anterior, Nodo siguiente)
{
this.dato=dato;
this.anterior=anterior;
this.siguiente=siguiente;
}
public Nodo(int dato)
{
this.dato=dato;
this.anterior=null;
this.siguiente=null;
}
public int getDato()
{
return dato;
}
public void setDato(int dato)
{
this.dato = dato;
}
public Nodo getAnterior()
{
return anterior;
}
public void setAnterior(Nodo anterior)
{
this.anterior = anterior;
}
public Nodo getSiguiente()
{
return siguiente;
}
public void setSiguiente(Nodo siguiente)
{
this.siguiente = siguiente;
}
}
Ejecucion en consola:
no se pero no corre!!!
ResponderEliminarHola David
ResponderEliminarComo tarea me dejaron el mismo ejercicio pero debo diseñar el algoritmo como seria este. me puedes reponder al correo de louresborras@gmail.com. gracias
te pasaron el algoritmo :c
Eliminarpor que en while colocaste (contexpo) ?
ResponderEliminarsi nunca creaste la variable?