Buenas como estan soy narurasengan y hoy les traigo listas enlasadas, para explicarlo de forma general imaginemos un archivero, o una caja con documentos, en este archivero tenemos lo que son folders de informacion en donde se guardan los trabajos o documentos que queremos almacenar tales como tareas de matematicas o fisica etc. cada folder existen documentos que contienen informacion o imagenes de lo que decidimos guardar. y todos estos datos nos dicen algo respecto a un unico sujeto es decir que es el forder de un unico cliente.
En forma teorica en si que es una lista enlasada pues es un conjunto de objetos que se relacionan en forma de lista, dichos objetos pueden ser de cualquier tipo, en este caso se usan
nodos pues los nodos son los que contienen informacion imagenes numeros lo que se quiera guardar en ellos.
El archivero seria nuestra lista, pues en ella se almacenara todos los folders de informacion es decir los nodos con la informacion que necesitamos almacenar y los documentos que se almacenan en el folder son los atrubutos que deceamos guardar es decir la informacion que nos piden que guardemos como nombre de usuario, edad, fotografias, etc.
Para crear una lista enlasada se necesitan dos cosas, una clase nodo y otra una clase lista, y otra clase es la que ingresa y modifica la informacion de esta empecemos con la clase Nodo
package listasenlasadas;
/**
* @author jaac747
*/
public class Nodo {
/*
*Creo una variable nodo la cual va a contener una referencia o un apuntador
* es decir con siguiente paso al siguiente nodo de la lista este es el que
* enlasa los datos de la lista
*/
private Nodo siguiente;
/*
* estas bariables son las de un usuario podemos colocar mas variables o menos
* es decir que el nodo contendra esta informacion del usuario en un unico nodo
*
*/
private String nombre;
private String apellido;
private int telefono;
/*
* metodo constructor vacio
*/
public Nodo(){
}
/*
* metodo constructor que recibe la informacion del usuario
*/
public Nodo(String nombre,String apellido,int telefono){
this.nombre=nombre;
this.apellido=apellido;
this.telefono=telefono;
}
/**
* @return the siguiente
*/
public Nodo getSiguiente() {
return siguiente;
}
/**
* @param siguiente the siguiente to set
*/
public void setSiguiente(Nodo siguiente) {
this.siguiente = siguiente;
}
/**
* @return the nombre
*/
public String getNombre() {
return nombre;
}
/**
* @param nombre the nombre to set
*/
public void setNombre(String nombre) {
this.nombre = nombre;
}
/**
* @return the apellido
*/
public String getApellido() {
return apellido;
}
/**
* @param apellido the apellido to set
*/
public void setApellido(String apellido) {
this.apellido = apellido;
}
/**
* @return the telefono
*/
public int getTelefono() {
return telefono;
}
/**
* @param telefono the telefono to set
*/
public void setTelefono(int telefono) {
this.telefono = telefono;
}
}
Luego de esto tenemos la clase lista que contiene la lista de objetos o de nodos
package listasenlasadas;
/**
*
* @author jaac747
*/
public class Lista {
/*
* nodo raiz es una referencia a el principio de la lista de los nodos
*/
private Nodo raiz;
/*
* el metodo insertar como su nombre lo indica sirve para insertar en la lista de nodos
* a un nodo nuevo
*/
public void insertar(String nombre, String apellido, int telefono) {
//se crea un nuevo nodo con la informacion
Nodo nuevo = new Nodo(nombre, apellido, telefono);
System.out.println(nombre+" "+apellido+" "+telefono);
//se verifica si el principio de la lista esta vacia si si se el asigna
//el nuevo nodo al principio
if (raiz == null) {
raiz = nuevo;
} else {
//de lo contrario se recorre la lista de nodos asta encontrar el que este
//vacio y se inserta el nuevo nodo en esta
Nodo puntero = raiz;
while (puntero.getSiguiente() != null) {
puntero = puntero.getSiguiente();
}
puntero.setSiguiente(nuevo);
}
}
/*
*el metodo modificar modifica un nodo se busca el nodo que se quiere
* modificar en este caso la busqueda es por nombre pero es mas recomendable
* hacerlo por id o carnet o cedula algo que sea unico del usuario y del nodo
* para que aya repeticiones
*/
public void modificar(String nombre, String apellido, int telefono) {
Nodo puntero = raiz;
//recorre la lista asta que encuentra el nombre y luego lo modifica
while (puntero.getNombre().equals(nombre) == false) {
puntero = puntero.getSiguiente();
}
puntero.setNombre(nombre);
puntero.setApellido(apellido);
puntero.setTelefono(telefono);
}
/*
*este metodo elimina toda la lista de nodos
*/
public void eliminar() {
raiz = null;
}
}
y por ultimo el metodo principal main que es el que agrega cambia y elimina todo
package listasenlasadas;
/**
*
* @author jaac747
*/
public class Listasenlasadas {
public static void main(String[] args) {
// TODO code application logic here
Lista nueva=new Lista();
nueva.insertar("josue", "hernandes", 58624315);
nueva.insertar("erick", "cortez", 45862319);
nueva.modificar("josue", "arenales", 58624315);
nueva.eliminar();
}
}
Bueno eso es todo por ahora me falto lo que es eliminar un solo nodo pero eso lo are otro dia no es muy dificil solo se modifica siguiente