Enunciado:
Escribir un programa que realice las siguientes tareas:
- Crear una lista enlazada de números enteros positivos al alzar, 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.
Para realizar este ejercicio, al igual que los dos ejercicios anteriores se debe tener en cuenta las definiciones para crear nodos, y los metodos principales para agregar un inicio a la lista, agregar un fin a la lista, y eliminar un nodo de la lista, el método que elimina los números que superen un límite es similar al método estandar para eliminar nodos.
A continuación se muestra el código:
Clase Nodo:
Clase Principal:
A continuación se muestra el código:
Clase Nodo:
public class Nodo { //Declaración de atributos private int dato; private Nodo siguiente; //Constructores de la clase Nodo public Nodo (int dato, Nodo siguiente) { this.dato=dato; this.siguiente=siguiente; } public Nodo (int datos) { this.dato=datos; this.siguiente=null; } //Metodos getter and setter public int getDato() { return dato; } public void setDato(int dato) { this.dato = dato; } public Nodo getSiguiente() { return siguiente; } public void setSiguiente(Nodo siguiente) { this.siguiente = siguiente; } }Clase Lista:
public class Lista { //Declaración de atributos private Nodo inicio; private Nodo fin; //Constructos de la clase Lista public Lista() { inicio=fin=null; } //Metodo para agregar un nodo al final public void agregarFin(int info) { Nodo nuevo = new Nodo(info, null); if(inicio==null) { inicio=fin=nuevo; } else { fin.setSiguiente(nuevo); fin = nuevo; } } //Metodo para imprimir los datos public void imprimir() { Nodo aux=inicio; while(aux!=null) { System.out.println(aux.getDato()); aux = aux.getSiguiente(); } } //Metodo apra eliminar los valores que superen un valor dado public void eliminar(int valor) { Nodo anterior=inicio; Nodo aux= inicio.getSiguiente(); Nodo temp; while(aux!=null) { //Condicional simple para eliminacion de nodos if(aux.getDato() > valor) { temp=aux.getSiguiente(); anterior.setSiguiente(aux.getSiguiente()); aux = temp; } else { anterior=anterior.getSiguiente(); aux=aux.getSiguiente(); } } } }
Clase Principal:
import java.util.Scanner; public class Principal { public static int leerEntero(String linea) { Scanner leer = new Scanner(System.in); System.out.println(linea); int dato = leer.nextInt(); return dato; } public static void main(String[] args) { Lista coleccion = new Lista(); int opcion; System.out.println("EJERCICIO 3 - LISTAS SIMPLES ENLAZADAS\n"); do{ System.out.println("MENU PRINCIPAL:"); System.out.println("1.- Ingresar datos a la lista"); System.out.println("2.- Imprimir Lista"); System.out.println("3.- Eliminar datos que se pasan de un limite."); System.out.println("4.- Salir"); opcion = leerEntero("Seleccione una opción:"); switch(opcion) { case 1: { int nuevo = leerEntero("Ingrese el elemento que desee ingresar a la lista:"); coleccion.agregarFin(nuevo); break; } case 2: { System.out.println("La lista ingresada es:"); coleccion.imprimir(); break; } case 3: { int valor = leerEntero("Ingrese el valor que sirva de limite:"); coleccion.eliminar(valor); break; } case 4: { System.out.println("FIN DEL PROGRAMA"); break; } } }while(opcion!=4); } }Capturas de pantalla del programa:
Y como se le hace para que en lugar de numeros sean nombres
ResponderEliminarPues tenes q cambiar las variables lo mas y podras poner letras
Eliminarexcelente
ResponderEliminarlo ejecuto y sale Anagrama que es eso?
ResponderEliminarsoy nuevo en esto de programar
Si el numero establecido como limite es inferior al numero raiz (el primer elemento de la lista), este ultimo no es eliminado. No esta recorriendo toda la lista sino a partir del segundo elemento.
ResponderEliminarMUY BUEN EJEMPLO ME SIRVIÓ DE MUCCHO
ResponderEliminary si al imprimir en pantalla quisiera mostrar los datos inversos(ejemplo si pongo 1-2-3-4-5 salga 5-4-3-2-1? cómo haría?
ResponderEliminarDisculpen ... buen dia .. y me podrían explicar como realizo el código con listas enlazadas.. si me piden
ResponderEliminarque debe tener un nombre, id, carrera, instituto y 3 notas ... Por favor ¡¡¡
Puedes pasar el codigo completo ??
ResponderEliminarcomo identifico cual es el ciclo que se utilizo? alguien podria decirme
ResponderEliminar