import javax.swing.JOptionPane;
public class Main
{
public static void llenar(Nodo n, ListaSimple obj)
{
int id = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite identificación:"));
n.setId(id);
String nom = JOptionPane.showInputDialog(null, "Digite nombre:");
n.setNombre(nom);
int edad = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite edad:"));
n.setEdad(edad);
}
public static void mostrar(Nodo n)
{
String datos = "";
datos += String.valueOf("ID: " + n.getId()+ "\n" +
"Nombre: " + n.getNombre() + "\n" +
"Edad: " + n.getEdad());
JOptionPane.showMessageDialog(null, "=========== INFORMACÓN DE LOS NODOS DE LA LISTA =========== \n"+ datos);
}
public static void listarTodos(Nodo n)
{
Nodo temp = n;
while(temp != null)
{
mostrar(temp);
temp = temp.getSiguiente();
}
}
public static int menu()
{
int opcion = 0;
do
{
opcion = Integer.parseInt(JOptionPane.showInputDialog("=========== SELECCIONE UNA OPCIÓN DEL MENÚ =========== \n" +
"1. Agregar estudiante al final de la Lista \n" +
"2. Agregar estudiante entre dos Nodos existentes\n" +
"3. Agregar estudiante al principio de la lista\n" +
"4. Buscar estudiante por ID o por Nombre\n" +
"5. Mostrar nodos de la lista\n" +
"6. Cantidad de nodos que hay en la lista\n" +
"7. Eliminar nodo de la lista\n" +
"8. Eliminar toda la lista\n" +
"9. Salir\n\n" +
" Seleccione una opción del 1 al 9:"));
}
while(opcion < 1 || opcion > 9);
return opcion;
}
public static void main(String[] args)
{
ListaSimple obj = new ListaSimple();
int opcion, id;
String nombre;
Nodo aux;
do
{
opcion = menu();
switch(opcion)
{
case 1:
aux = new Nodo();
llenar(aux, obj);
obj.agregarFinal(aux);
break;
case 2:
id = Integer.parseInt(JOptionPane.showInputDialog("Digite ID del estudiante que quiere agregar: "));
Nodo nd = obj.buscarId(id);
if(nd != null)
{
aux = new Nodo();
llenar(aux, obj);
obj.agregarEntreNodos(nd, aux);
}
else
{
JOptionPane.showMessageDialog(null, "La ID NO se encuentra en la lista");
}
break;
case 3:
aux = new Nodo();
llenar(aux, obj);
obj.agregarInicio(aux);
if(obj.getCabeza() != null)
{
listarTodos(obj.getCabeza());
}
else
{
JOptionPane.showMessageDialog(null, "La Lista Está Vacía....");
}
break;
case 4:
int opc;
do
{
opc = Integer.parseInt(JOptionPane.showInputDialog("Como desea realizar la busqueda:\n 1. ID\n 2. Nombre"));
}
while(opc < 1 || opc > 2);
if(opc == 1)
{
id = Integer.parseInt(JOptionPane.showInputDialog("Digite ID del estudiante a Buscar: "));
aux = obj.buscarId(id);
if(aux != null)
{
mostrar(aux);
}
else
{
JOptionPane.showMessageDialog(null, "La información del estudiante No se encuentra en la lista");
}
}
else
{
nombre = JOptionPane.showInputDialog("Digite Nombre del estudiante a Buscar: ");
aux = obj.buscarNombre(nombre);
if(aux != null)
{
mostrar(aux);
}
else
{
JOptionPane.showMessageDialog(null, "La información del estudiante No se encuentra en la lista");
}
}
break;
case 5:
aux = obj.getCabeza();
if (aux != null)
{
listarTodos(aux);
}
else
{
JOptionPane.showMessageDialog(null, "No hay nodos en la lista.");
}
break;
case 6:
JOptionPane.showMessageDialog(null, "Hay " + obj.contarNodos() + " nodos en la lista.");
break;
case 7:
aux = obj.getCabeza();
if (aux != null)
{
obj.eliminar(aux);
JOptionPane.showMessageDialog(null, "Se elimino un nodo correctamente.");
}
else
{
JOptionPane.showMessageDialog(null, "No hay nodo en la lista.");
}
break;
case 8:
obj.limpiar();
JOptionPane.showMessageDialog(null, "La lista se ha eliminado.");
break;
default:
break;
}
}
while(opcion != 9);
}
}
public class Nodo
{
private int id;
private String nombre;
private int edad;
private Nodo siguiente;
public void Nodo()
{
id = 0;
nombre = "";
edad = 0;
siguiente = null;
}
public void setId(int n)
{
id = n;
}
public int getId()
{
return id;
}
public void setNombre(String n)
{
nombre = n;
}
public String getNombre()
{
return nombre;
}
public void setEdad(int n)
{
edad = n;
}
public int getEdad()
{
return edad;
}
public void setSiguiente(Nodo n)
{
siguiente = n;
}
public Nodo getSiguiente()
{
return siguiente;
}
}
public class ListaSimple
{
private Nodo cabeza;
public ListaSimple()
{
cabeza = null;
}
public void setCabeza(Nodo n)
{
cabeza = n;
}
public Nodo getCabeza()
{
return cabeza;
}
public Nodo ultimo()
{
Nodo temp = cabeza;
while(temp != null)
{
if(temp.getSiguiente() == null)
{
break;
}
else
{
temp = temp.getSiguiente();
}
}
return temp;
}
public int contarNodos()
{
Nodo temp = cabeza;
int contador = 0;
while(temp != null)
{
contador++;
temp = temp.getSiguiente();
}
return contador;
}
public void agregarFinal(Nodo n)
{
if(cabeza == null)
{
setCabeza(n);
}
else
{
ultimo().setSiguiente(n);
}
}
public void agregarEntreNodos(Nodo nd, Nodo nuevo)
{
nuevo.setSiguiente(nd.getSiguiente());
nd.setSiguiente(nuevo);
}
public void agregarInicio(Nodo n)
{
n.setSiguiente(cabeza);
setCabeza(n);
}
Nodo buscarId(int c)
{
Nodo temp = cabeza;
while(temp != null)
{
if(temp.getId() == c)
{
break;
}
else
{
temp = temp.getSiguiente();
}
}
return temp;
}
Nodo buscarNombre(String n)
{
Nodo temp = cabeza;
while(temp != null)
{
if(temp.getNombre().equals(n))
{
break;
}
else
{
temp = temp.getSiguiente();
}
}
return temp;
}
}