Java - no se que pued hacer para que sea mas eficiente

 
Vista:

no se que pued hacer para que sea mas eficiente

Publicado por descode (4 intervenciones) el 15/04/2023 02:27:42
mi profesor nos mando a hacer una lista doblemente enlazada con los metodos mostrar eliminar, modificar, adicionar y buscar le presente el siguiente codigo pero dijo que era muy redundante alguien me dice que puedo hacer entonces?
public class Nodo {
public int dato;
public Nodo si;
public Nodo ant;

public Nodo(int dato) {
this(dato, null, null);
}

public Nodo(int dato, Nodo si, Nodo ant) {
this.dato = dato;
this.si = si;
this.ant = ant;
}
}
public class lisdo {
private Nodo inicio,fin;

public lisdo() {
inicio = fin = null;
}
public boolean verificar(){
return inicio == null;
}

public void adiccionainicio(int dato){
if(!verificar()){
inicio =new Nodo(dato,inicio,null);
inicio.si.ant =inicio;
}else{
inicio=fin =new Nodo(dato);
}
}
public void adiccionafin(int dato){
if(!verificar()){
fin =new Nodo(dato,null,fin);
fin.ant.si =fin;
}else{
inicio=fin =new Nodo(dato);
}
}

public void mostrarinicio() {
if (!verificar()) {
Nodo n = fin;
while (n != null) {
JOptionPane.showMessageDialog(null, "[" + n.dato + "]<=>");
n = n.ant;
}
}
}

public void mostrarfin() {
if (!verificar()) {
Nodo n = inicio;
while (n != null) {
JOptionPane.showMessageDialog(null, "[" + n.dato + "]<=>");
n = n.si;
}
}
}

public boolean buscar(int dato){
Nodo act = inicio;
boolean r = false;
while(act!=null && act.dato != dato){
act = act.si;
r = true;
}
return r;
}


//eliminar
public int eliminar(int n) {
Nodo act = inicio;
if (inicio == fin && act.dato == n) {
inicio = fin = null;
}else{
if (!verificar()) {

while (act != null && act.dato != n) {
act = act.si;
}
}

if (act != null) {
if (act != inicio) {
if (act != fin) {
act.si.ant = act.ant;
act.ant.si = act.si;
} else {
fin = fin.ant;
fin.si = null;
}
} else {
inicio = inicio.si;
inicio.ant = null;
}
}
}
return n;
}
public boolean modificar(int db ,int dn){
Nodo act= inicio;
boolean au=false;
if(!verificar()){
while(act != null && au != true){

if(act.dato==db){
act.dato=dn;
au = true;
}
act= act.si;
}

}
return au;
}

}
public class main {

public static void main(String[] args) {
lisdo l = new lisdo();
int o ;
do {
o = Integer.parseInt(JOptionPane.showInputDialog(null,
"1. adicciona en el inicio\n"
+ "2. adicciona en el final\n"
+ "3. mostrar \n"
+ "4. modificar \n"
+ "5. borrar\n"
+ "6. buscar\n"
+ "7. fin\n"
));
switch (o) {
case 1:
int d = Integer.parseInt(JOptionPane.showInputDialog(null, "adicciona un numero al inicio"));
l.adiccionainicio(d);
break;

case 2:
d = Integer.parseInt(JOptionPane.showInputDialog(null, "adiccion un numero al final" ));
l.adiccionafin(d);
break;
case 3:
l.mostrarinicio();
break;
case 4:
if (!l.verificar()) {
int db = Integer.parseInt(JOptionPane.showInputDialog(null, "digite un dato entero a buscar"));
int dn = Integer.parseInt(JOptionPane.showInputDialog(null, "digite un dato entero nuevo"));
boolean c = l.modificar(db, dn);
if (c) {
JOptionPane.showMessageDialog(null, "se modifico");
break;
} else {
JOptionPane.showMessageDialog(null, "el dato no existe ");
break;
}
} else {
JOptionPane.showMessageDialog(null, "no hay nada en la lista");
break;
}
case 5:
int n = Integer.parseInt(JOptionPane.showInputDialog(null, "digita el numero a borrar"));
l.eliminar(n);
break;

case 6:
n = Integer.parseInt(JOptionPane.showInputDialog(null, "digita el numero que vas a buscar"));
boolean encontrado = l.buscar(n);
if (encontrado) {
JOptionPane.showMessageDialog(null, n + " si esta en la lista");
} else {
JOptionPane.showMessageDialog(null, n + " no esta en la lista");
}
break;
case 7:
break;
default:
JOptionPane.showMessageDialog(null, "digita un numero valido");
}
} while (o != 7);
}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder