Java Listas Simplemente Enlazadas.
En ciencias de la computación, una lista enlazada es una de las estructuras de
datos fundamentales, Consiste en una secuencia de nodos, en los que se
guardan campos de datos de todo tipo y unas referencias, enlaces o punteros al
nodo posterior. El principal beneficio de las listas enlazadas respecto a los
vectores convencionales es que el orden de los elementos enlazados puede ser
diferente al orden de almacenamiento en la memoria o el disco, permitiendo
que el orden de recorrido de la lista sea diferente al de almacenamiento.
Una lista enlazada es un tipo de dato autorreferenciado porque contienen un
puntero o enlace (en inglés link, del mismo significado) a otro dato del mismo
tipo. Las listas enlazadas permiten inserciones y eliminación de nodos en
cualquier punto de la lista en tiempo constante.
Representación de un Nodo:
P 123=DIRECCION
Información
Null=Punte
ro
DIRECCION: Significa que todo nodo tiene una dirección de memoria.
Información: Puede ser cualquier dato del tipo Int, float, String, Char o
cualquier tipo de dato.
Puntero: Es una dirección de memoria que puede ser nula (nill), o una
dirección que apunta a otro nodo.
REPRESENTACION DE UN NODO COMPLETO:
100
NOMBRE
CARNET
SUELDO
FEC_NAC
LUG_NAC
SEXO
null
UN SOLO NODO:
REPRESENTACION DE UNA LISTA SIMPLEMENTE ENLAZADA.
P U u p
500 1000 2000 3000
RONALD
CARLOS VARGAS LUIS GARDEN POMARAYME WALTER SOTO
2759464 3456789 3456777 4455666
POTOSI LINARES 3456 CARO 234 PETOT 1100
3456.78 1234.5 3456.7 4567.8
FEMENINO MASCULINO FEMENINO MASCULINO
1000 2000 3000 null
U = [Link];
U= 1000;
MODOS DE INSERCION: [Link]=p; [Link]=p;
[Link]=3000; [Link]=null;
INSERCIÓN POR DETRÁS: El primer nodo que se inserta siempre será el último
nodo. Para realizar este procedimiento solo se utiliza dos variables de
puntero:
INSERCION POR DELANTE: El primer nodo que se inserta siempre será el
primer nodo. Para realizar este procedimiento se utiliza tres variables de
puntero.
DECLARACION DE UN NODO EN JAVA: SE DECLARA COMO UNA CLASE:
class ALUMNO
{ String NOMBRE,
int CARNET,
float SUELDO,
ALUMNO punt;
};
DECLARACION DE VARIABLES DE PUNTERO
ALUMNO p=null,a=null,u=null,m=null, maria=null;
PARA INSERTAR NODOS POR ATRÁS SE SIGUE EL SIGUIENTE
PROCEDIMIENTO:
If ( p==null)
{
p=new ALUMNO(); // p=100;
[Link]=”JOSE FLORES”;
[Link]=345678; // Solo se ejecuta una sola vez
[Link]=2345.6;
[Link]=null;
}
else
{
u=new ALUMNO();
[Link]=”MARCIA MAMANI”;
[Link]= 5553444;
[Link]= 4445.6;
[Link]=p;
u=p,
}
PARA VER LOS NODOS DE UNA LISTA SE USA UN CICLO WHILE.
P ES EL PUNTERO AL PRIMER NODO
PARA NO PERDER LA DIRECCION DEL PRIMER NODO, SE LE ASIGNA A OTRA
VARIABLE.
u=p; // u=500;
while (u!=null)
{
[Link](“NOMBRE=”+[Link]+”DIRECCION=”+[Link]+”SUELDO=”+[Link]);
u=[Link]; // Es la clave para hacer el recorrido
}
//FIN DEL RECORRIDO
PARA LA PROXIMA CLASE.
RECORRIDO POR DELANTE: Cada vez que se quiere insertar un nuevo nodo
hay que recorrer desde el principio hasta el final.
If ( p==null)
{
p=new ALUMNO();
[Link]=”JOSE FLORES”;
[Link]=345678;
[Link]=2345.6;
[Link]=null;
}
else
{ a=p;
u=p
while (p!=null)
{
a=u;
u=[Link];
}
// cuando finaliza este recorrido a esta apuntando al ultimo nodo.
u=new ALUMNO();
[Link]=”MARCIA MAMANI”;
[Link]= 5553444;
[Link]= 4445.6;
[Link]=u;
[Link]=null,
}