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?