1. Estudiante con 3 atributos: nombre, cédula, y edad.
2. Nodo la cual va a contener 2 atributos: Estudiante y siguiente (referencia al nodo siguiente)
3. Lista, es un clase la cual contiene los apuntadores inicio y fin y los métodos de inserción, impresión y eliminación.
4. Clase principal la cual realizará la invocación a la clase lista y demás para verificar su utilización.
A continuación se presenta el código de la clase Estudiante:
package prylistassimple; public class Estudiante { private String nombre; private String cedula; private int edad; public Estudiante() { } public Estudiante(String nombre, String cedula, int edad) { this.nombre = nombre; this.edad = edad; this.cedula=cedula; } public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public int getEdad() { return edad; } public void setEdad(int edad) { this.edad = edad; } public String getCedula() { return cedula; } public void setCedula(String cedula) { this.cedula = cedula; } }
No se olviden de consultar por palabras claves! Ejemplo de Estructura de datos en java, tutorial de estructura de datos
Búsqueda personalizada
package prylistassimple; public class Nodo { private Estudiante alumno; private Nodo siguiente; public Nodo(Estudiante alumno) { this.alumno = alumno; siguiente=null; } public Nodo(Estudiante alumno, Nodo siguiente) { this.alumno = alumno; this.siguiente = siguiente; } public Estudiante getAlumno() { return alumno; } public void setAlumno(Estudiante alumno) { this.alumno = alumno; } public Nodo getSiguiente() { return siguiente; } public void setSiguiente(Nodo siguiente) { this.siguiente = siguiente; } }A continuación se presenta el código de la clase lista:
package prylistassimple; public class Lista { Nodo inicio; Nodo fin; public Lista() { inicio = null; fin = null; } public void agregarNodoAlInicio(Estudiante obj) { Nodo nuevo = new Nodo(obj, inicio); inicio = nuevo; if (fin == null) { fin = nuevo; } } public void agregarNodoAlFinal(Estudiante obj) { Nodo nuevo = new Nodo(obj); // nuevo.setSiguiente(null); if (fin != null) { fin.setSiguiente(nuevo); fin = nuevo; } else { fin = nuevo; inicio = nuevo; } } public void recorreLista() { Nodo aux = inicio; int cont=1; while (aux != null) { System.out.println(cont +". "+aux.getAlumno().getNombre()+ "-"+aux.getAlumno().getCedula()); cont++; aux = aux.getSiguiente(); } } public void eliminarInicio() { if (inicio != fin) { Nodo aux = inicio; inicio = inicio.getSiguiente(); aux = null; } else { inicio = null; fin = null; } } public boolean eliminarNodo(String cedula) { if (inicio != null) {//Vericación que existan nodos en la lista if (inicio == fin && inicio.getAlumno().getCedula().compareTo(cedula) == 0) { //Si solo existe un único nodo inicio = fin = null; return true; } else if (inicio.getAlumno().getCedula().compareTo(cedula) == 0) { //Si la cedula se encuentra en el primer nodo inicio=inicio.getSiguiente(); //Apuntamos el inicio al siguiente nodo return true; } else { //necesitamos dos Nodos Nodo anterior = inicio; //anterior apuntando al inicio Nodo temporal = inicio.getSiguiente(); //temporal al siguiente nodo del anterior //Debemos recorrer todos los nodos de la lista hasta encontrar una cedula o hasta el final (temporal sea null) while (temporal != null && temporal.getAlumno().getCedula().compareTo(cedula) != 0) { anterior=anterior.getSiguiente(); //desplazamos al siguiente nodo temporal=temporal.getSiguiente(); // desplazamos al siguiente nodo de la lista } //Cuando llegue a este punto pudo ser si encontró una cédula o llegó al fin //preguntamos si fue diferente de null (es decir que halló un nodo) //el proceso es eliminar el nodo donde está el temporal //Por lo tanto se requiere enlazar el anterior con el enlace siguiente del temporal if (temporal != null) { anterior.setSiguiente(temporal.getSiguiente()); if (temporal == fin) { // puede darse el caso que el temporal sea el último nodo por lo que debemos referenciar fin = anterior; // el nuevo fin hacia el anterior } return true; } return false; } }return false; } }A continuación se presenta el código de la clase Principal:
public class Principal { /** * @param args the command line arguments */ public static void main(String[] args) { Lista coleccion=new Lista(); Estudiante alumnoA=new Estudiante("Juan","12345", 20); coleccion.agregarNodoAlInicio(alumnoA); coleccion.agregarNodoAlFinal(new Estudiante("Santiago","1234321", 11)); coleccion.agregarNodoAlInicio(new Estudiante("Anabel","09876", 50)); System.out.println("Imprimir los elementos agregados hasta el momento"); coleccion.recorreLista(); System.out.println("Eliminar inicio"); coleccion.eliminarInicio(); coleccion.recorreLista(); coleccion.agregarNodoAlFinal(new Estudiante("Alberto","7765",80)); System.out.println("Imprimir lista"); coleccion.recorreLista(); String cedula=JOptionPane.showInputDialog("Ingrese la cédula del estudiante a eliminar"); if(coleccion.eliminarNodo(cedula)){ System.out.println("estudiante con cedula No. "+cedula+" borrado"); System.out.println("Listado actual"); coleccion.recorreLista(); }else{ System.out.println("No existe estudiante con cedula No."+cedula); } } }
No hay comentarios:
Publicar un comentario