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.
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.
- meztor's blog
- Inicie sesión o regístrese para enviar comentarios
Comentarios
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 simplementepackage 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!
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