listas genericas enlace simple ejemplo

Hola que tal . Pues aqui pasando a aportar un pequeño ejemplo del uso las listas de enlace simple segun yo ya esta completo a menos que se me halla pasado un detalle causado por algun descuido. Si encuentra algun error bueno pos ahi me avisan. O alguna sugerencia para hacer mas efectivo el programa o alguna sugerencia de como programar mejor, esto se los pido por que pues como usted estimado lector sabe soy nuevo en esto.

package ClaseNodos;

import javax.swing.JOptionPane;

public class Nodo {
   public Nodo sig;
    public int valor;

    public Nodo insertarPrincipio(int valor, Nodo raiz){
        Nodo temp= new Nodo();
        temp.valor=valor;

        if(raiz==null){//crea el primer nodo
            temp.sig=null;
        }
        else{//inserta un nuevo nodo antes del primer nodo

           temp.sig=raiz;
        }
        raiz=temp;
        return raiz;
    }
   
    //inserta un valor entre nodos
    public void insertarIntermedio(int valor_buscado, int valor,Nodo raiz){
        Nodo nuevo= new Nodo();
        Nodo intermedio= new Nodo();
        nuevo.valor=valor;
        intermedio=raiz;
        while(intermedio.sig!=null&& intermedio.valor!=valor_buscado){
            intermedio=intermedio.sig;
        }
        nuevo.sig=intermedio.sig;
        intermedio.sig=nuevo;
    }
    //inserta el despues del ultimo nodo
    public void insertarFinal(int valor, Nodo raiz){
        if(raiz==null){
            JOptionPane.showMessageDialog(null, "la lista esta vacia \n no se puede insertar al final");
        }
        else{
        Nodo nuevo= new Nodo();
        nuevo.valor= valor;
        nuevo.sig=null;
        Nodo ultimo= new Nodo();
        ultimo=raiz;

        while(ultimo.sig!=null){
           ultimo=ultimo.sig;
        }
         ultimo.sig=nuevo;
        }
    }
//borrar el primer nodo
    public Nodo borrarPrincipio(Nodo raiz){
        if (raiz.sig==null){
            raiz=null;
        }else{
            raiz=raiz.sig;
        }
        return raiz;
    }
//borra cualquier  que no sea el primero
    public void borrarintermedio(int valorEL, Nodo raiz){
        Nodo intermedio=raiz;
        Nodo previo=raiz;
        while((intermedio.sig!=null)&&(intermedio.valor!=valorEL)){
            previo=intermedio;
            intermedio=intermedio.sig;
           
        }
        previo.sig=intermedio.sig;
     }
//borrao el ultimo nodo
    public void borrarFinal(Nodo raiz){
        Nodo anterior=raiz;
        Nodo siguiente=raiz;
        while(siguiente.sig!=null){
             anterior=siguiente;
            siguiente=siguiente.sig;
        }
         anterior.sig=null;
    }
// busca valores  en la lista
    public void buscar(Nodo raiz,int valorBuscado){
        Nodo siguiente=raiz;
        boolean sita;
        while((siguiente.sig!=null)&&(siguiente.valor!=valorBuscado)){
            siguiente=siguiente.sig;

        }
        if(siguiente.valor==valorBuscado){
            JOptionPane.showMessageDialog(null, "el numero "+ valorBuscado+" si esta en la lista");
            sita= true;
        }
       
        //return sita;
    }
// imprime todos los nodos  de la lista
    public String imprimir(Nodo raiz){
        Nodo recorre;
        recorre=raiz;
        String cad=" ";
        if(recorre==null)
            JOptionPane.showMessageDialog(null,"la lista esta vacia");
        else{
            while(recorre.sig!=null){
                cad=cad+recorre.valor+" -> ";
                //JOptionPane.showMessageDialog(null, cad);
                recorre=recorre.sig;
            }
        cad=cad+recorre.valor+" ->null ";
        return cad;
       }
       return cad;
      }

}

gracias por sus aportaciones y por tomarse el tiempo para leer

estas lineas de codigo.

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Se ve razonablemente bien.

Se ve razonablemente bien.

Acá van algunas observaciones:

1.- El nombre del paquete siempre debe de ir en minusculas package clasenodos; o simplemente package nodos;
2.- No uses JOptionPane aquí, aunque sirve para tener feedback, estas mezclando dos niveles diferentes ( estructura de datos con interfaz de usuario ) mejor usa logs o excepciones.
3.- Nunca escribas un if o un else sin llaves ( aunque tenga una sola linea, if( ... )  {   ...  } else { .... } ) Al menos no lo hagas hasta que hayas trabajado en equipo y hayan tenido que colgar a alguien de los meros tejoco..... ehem, ehem... ehem... no lo hagas.

Y ya.

El resto se ve razonablemente bien.

Si quieres otra revisión mucho más estricta me avisas y con gusto, pero por lo que yo veo, con esto sería suficiente.

Por cierto sería muy útil que pusieras al final un main, con un ejemplo de como se usa tu clase.

Chau!

Imagen de Marce

buena idea

jiji oye @OscarRyz no te convendría hacer un post en tu blog sobre los estándares de la nomenclatura de Java :p así te evitas la fatiga de sugerir y sugerir siempre lo mismo :) yo creo que sería buena idea como que tú eres bueno para eso y así aquí quedaría registrado y para cualquier duda nada más harías un enlace a ese post y listo :)

yo nomás digo hee :p quizá a ti te guste sugerir y ps está bien de todas formas.. buen día!!

jejej si verdad... No se

jejej si verdad...

No se me había ocurrido. O quizá se me ocurrió y pensé que los únicos que los iban a leer eran los que ya siguen esos estándares y los que de cuaquier forma no lo siguían no lo iban a leer. :P

Estos estándares, más propiamente llamados "convenciones de códificación" varian de proyecto en proyecto, pero las publicadas por Sun en el '99 son las que se consideran por default para toda la plataforma.

Acá les dejo mientras escribo ese blog ( if ) , el link donde pueden encontrar estas "Convenciones de codificación" ( ahora en Oracle )

http://www.oracle.com/technetwork/java/codeconv-138413.html