Tengo mis métodos para buscar, eliminar Inicio, eliminar Final,Agregar Inicio, Agregar al Final, pero no he podido desarrollar los métodos para:
Buscar y Eliminar, el elemento buscado
Insertar elemento en la posición que indique el usuario.
He leido varios post, pero no he encontrado la solución.
Esto necesito hacerlo en listas simples y Doblemente enlazadas en JAVA, les comparto mis métodos y clases:
Código:
//Clase nodo
package asesorialistas;
/*@author Daniel Solis*/
public class Nodo{
public int Dato;
public Nodo Sig;//Puntero Enlcae recursivo
//Enlaza los diferentes nodos
//Constructor inicializar nodos
public Nodo(int d){
//Para crear un nodo final
this.Dato=d;
}
//Constructor para insertar al inicio
public Nodo(int d, Nodo n){
this.Dato=d;
this.Sig=n;
}
}
//Metodos Lista
package asesorialistas;
/*@author Daniel Solis*/
public class Lista {
//Creando punteros
protected Nodo Inicio, Fin; //Punteros para saber donde inica y donde termina
//Donde esta el Inicio y Fin
public Lista(){
Inicio=null;
Fin=null;
}
/*----------------------------------------------------------------------------*/
//Metodo para agregar al incio de la lista
public void AgregarInicio(int Elemento){
//Creando el nodo
Inicio = new Nodo(Elemento,Inicio);//Creando el Nodo
if(Fin==null){
Fin=Inicio;
}
}
/*----------------------------------------------------------------------------*/
//Metodo para agregar al final
public void AgrearFin(int Elemento){
if (!EstaVacia()) {
Fin.Sig=new Nodo(Elemento);
Fin=Fin.Sig;
}else{
Inicio=Fin=new Nodo(Elemento);
}
}
/*----------------------------------------------------------------------------*/
//Metodo para mostrar la lista
public void Mostrar(){
Nodo recorrer=Inicio;
while (recorrer!=null){
System.out.print("["+recorrer.Dato+"]");
recorrer=recorrer.Sig;
}
}
/*----------------------------------------------------------------------------*/
//Metodo esta la lista Vacia
public boolean EstaVacia() {
return Inicio==null;
}
/*----------------------------------------------------------------------------*/
public int BorrarInicio(){
//creando el nodo
int Elemento = Inicio.Dato;
if(Inicio==Fin){
Inicio = Fin = null;
}
else{
Inicio=Inicio.Sig;
}
return Elemento;
}
/*----------------------------------------------------------------------------*/
public int BorrarFinal(){
int Elemento = Fin.Dato;
if(Inicio==Fin){
Inicio = Fin = null;
}else{
Nodo temporal = Inicio;
while(temporal.Sig != Fin){
temporal = temporal.Sig;
}
Fin = temporal;
Fin.Sig = null;
}
return Elemento;
}
/*----------------------------------------------------------------------------*/
public boolean BuscarElemento (int elemento){
Nodo temporal=Inicio;
while (temporal!=null&& temporal.Dato!=elemento)
{
temporal=temporal.Sig;
}
return temporal!=null;
}
public boolean BuscarElementoEsp (int elemento){
Nodo temporal=Inicio;
while (temporal!=null&& temporal.Dato!=elemento)
{
temporal=temporal.Sig;
}
return temporal!=null;
}
}
//Clase Principal
package asesorialistas;
import java.awt.HeadlessException;
import javax.swing.JOptionPane;
/*@author Dany*/
public class Principal {
public static void main(String[] args) {
//crear instancias de las clases
Lista Listita = new Lista();
//menu do while
int opcion = 0;
int Elemento; //valor a la lista (para insertar)
do {
try {
opcion = Integer.parseInt(JOptionPane.showInputDialog(null, "*** MENU DE OPCIONES ***\n"
+ "1.- Agregar un Elemento al Inicio \n"
+ "2.- Agregar un Elemento al Final \n"
+ "3.- Mostrar los Elementos de las listas \n"
+ "4.- Checar si la lista esta vacia \n"
+ "5.- Borrar Elemento al inicio \n"
+ "6.- Borrar Elemento al final \n"
+ "7.- Buscar Elemento \n"
+ "8.- Buscar Elemento y eliminar elemento \n"
+ "9.- Salir \n"));
switch(opcion){
case 1:
try {
Elemento = Integer.parseInt(JOptionPane.showInputDialog(null, "Ingresa el Elemento "
+ "al inicio"));
Listita.AgregarInicio(Elemento);
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null,"Error"+e.getMessage());
}
break;
case 2:
try {
Elemento = Integer.parseInt(JOptionPane.showInputDialog(null, "Ingresa el Elemento "
+ "al final"));
Listita.AgrearFin(Elemento);
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null,"Error"+e.getMessage());
}
break;
case 3:
Listita.Mostrar();
System.out.println("");
break;
case 4:
Listita.EstaVacia();
break;
case 5:
try {
Elemento = Listita.BorrarInicio();
JOptionPane.showMessageDialog(null, "El Elemento eliminado es: "
+Elemento,"Eliminando nodo de inicio",
JOptionPane.INFORMATION_MESSAGE);
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null,"Error"+e.getMessage());
}
break;
case 6:
try {
Elemento = Listita.BorrarFinal();
JOptionPane.showMessageDialog(null, "El Elemento eliminado es: "
+Elemento,"Eliminando nodo de fin",
JOptionPane.INFORMATION_MESSAGE);
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null,"Error"+e.getMessage());
}
break;
case 7:
Elemento=Integer.parseInt(JOptionPane.showInputDialog(null,"Ingresa el "+" elemento a buscar...","Buscando nodos en la lista",
JOptionPane.INFORMATION_MESSAGE));
if (Listita.BuscarElemento(Elemento)==true) {
JOptionPane.showMessageDialog(null, "El elemento " + Elemento + " si esta en la lista",
"nodo encontrado",JOptionPane.INFORMATION_MESSAGE);
}else{JOptionPane.showMessageDialog(null, "El elemento " + Elemento + " no esta en la lista",
"nodo no encintrado",JOptionPane.INFORMATION_MESSAGE);
}
break;
case 8:
Elemento=Integer.parseInt(JOptionPane.showInputDialog(null,"Ingresa el "+" elemento a buscar...","Buscando nodos en la lista",
JOptionPane.INFORMATION_MESSAGE));
if (Listita.BuscarElemento(Elemento)==true) {
int resp = JOptionPane.showConfirmDialog(null, "El elemento " + Elemento + " si esta en la lista quieres eliminarlo");
if (JOptionPane.OK_OPTION == resp){
System.out.println("Eliminar registro");
}else{System.out.println("No Eliminar");
}
}else{JOptionPane.showMessageDialog(null, "El elemento " + Elemento + " no esta en la lista",
"nodo no encintrado",JOptionPane.INFORMATION_MESSAGE);
}
break;
}
} catch (HeadlessException | NumberFormatException e) {
JOptionPane.showMessageDialog(null,"Error"+ e.getMessage());
}
} while (opcion != 9);
}
}
Espero puedan darme una mano con este ejercicio, saludos.
DS