Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Uso de referencias
● primitivos
● referenciados
Las variables de tipo primitivo: byte, short, int, long, float, double, char, boolean; almacenan
directamente un valor.
Por ejemplo:
int x = 4;
Sin embargo, una variable de tipo referenciado (que llamaremos “variable de referencia”), almacena
direcciones de memoria.
La referencia a un objeto es la dirección de un área en memoria, en ésta, se representa un objeto.
En la clase AppPersona, se tiene el método main, en el cual se crea un objeto de tipo Persona y un
ArrayList de tipo Persona. Posteriormente, se crea la primera persona y se muestra su referencia.
Después de comprobar el uso de variables de referencia, se asigna a persona2 la referencia del objeto
persona y se muestran ambas referencias encontrando el mismo objeto.
Al ejecutar la aplicación, se muestra en pantalla la referencia del objeto persona, que es la dirección de
memoria del objeto persona y la referencia de cada objeto que contiene el ArrayList.
Listas Enlazadas
Estructura de Datos
En programación, una estructura de datos, es una forma particular de organizar datos para que éstos
puedan ser utilizados de manera eficiente.
Diferentes tipos de estructuras de datos son adecuadas para diferentes tipos de aplicaciones y algunos
son altamente especializados para tareas específicas.
Las estructuras de datos son un medio para manejar grandes cantidades de datos de manera eficiente,
para usos tales como: grandes bases de datos y servicios de indización de internet.
Existen varias formas de clasificar las estructuras de datos. Una de ellas es diferenciando entre
estructuras internas y externas.
Las listas enlazadas, pilas y colas corresponden a estructuras dinámicas y lineales, dado
que hay una secuencia ordenada entre sus distintos componentes.
FIFO y LIFO
Los conceptos de FIFO y LIFO, están asociados a estructuras de datos e indican el orden en que se
ingresan y procesan los objetos que forman parte de una estructura de datos lineal.
Una lista enlazada es un conjunto de objetos, donde cada uno de ellos, almacena la referencia a otro
objeto de su misma clase, por lo que cada objeto, además de almacenar sus datos propios, tiene una
referencia a su nodo siguiente.
● Referencia de la Lista: la referencia del primer objeto de una lista enlazada se almacena en una
variable de referencia de la misma clase y sólo se modificará su contenido cuando ese primer
objeto se elimina, y lo llamaremos “referencia de la lista”.
● Lista Vacía: Cuando una lista está vacía, la referencia de la lista debe ser null.
● Último Nodo: Cuando la referencia del siguiente objeto es null, indica que no existe objeto a
continuación, esto significa que es el término de la lista enlazada.
Al crear una lista, utilizaremos el concepto de FIFO, es decir, el primer objeto que se coloca en la lista
será el primero en ser procesado y el último que se coloca en la lista.
La definición de atributos en la clase que representa un nodo de la lista enlazada serán los que
almacenen las características de cada objeto, y su referencia al siguiente objeto del mismo tipo lo
llamaremos “atributo enlace”.
1) Creamos el primer nodo, cuya referencia debe contener el primer objeto. La variable de
referencia la llamaremos “nuevo”.
2) Si la referencia a la lista es null, o sea, si la lista está vacía, entonces significa que estamos en
presencia del primer nodo de la lista.
3) Posteriormente, a la variable de referencia, “lista”, asignamos este nuevo objeto.
Al crear un segundo objeto, nos enfrentamos a un comportamiento distinto.
1) Como la lista no está vacía, la variable de referencia “lista” tiene al primer nodo, por lo que se
deberá buscar el final de la lista enlazada para posicionar el nuevo nodo.
2) Una vez encontrado el final de la lista, que en este caso, es el primer nodo, en éste se
referencia, como siguiente nodo, al nuevo nodo.
1) Como la lista no está vacía, la variable de referencia “lista” tiene al primer nodo, por lo que se
deberá buscar el final de la lista enlazada para posicionar el nuevo nodo.
2) La diferencia con la búsqueda del segundo nodo, es que tiene que recorrer, al menos, un nodo.
3) Una vez encontrado el final de la lista (que, en este caso, es el segundo nodo), en este nodo se
referencia como siguiente nodo al nuevo nodo
Primero, asignamos a un objeto la referencia del primer nodo de la lista enlazada. La misión de este
objeto es avanzar por cada nodo de la lista.
Mientras el atributo enlace almacene un valor que sea distinto a null, debemos avanzar al siguiente
objeto.
El avance al siguiente objeto se realiza asignando el contenido del atributo enlace al objeto que recorre
la lista.
Cuando estamos en el último nodo de la lista, el atributo enlace de este nodo, almacena null.
Por lo tanto, la condición del ciclo será falsa, terminando el recorrido.
● Recorrer lista completa
El objeto que recorre la lista no almacena null, por lo tanto, avanzamos al siguiente.
Cuando el objeto que recorre la lista enlazada almacena null, la hemos recorrido de forma completa.
● Recorrer lista enlazada cuando estamos en el antecesor de un nodo
Si esta referencia la almacena “w” el recorrido se debe hacer hasta el nodo que está antes del que “w”
referencia.
Para comenzar el recorrido, asignamos a un objeto la referencia del primer nodo de la lista enlazada.
La misión de este objeto es avanzar por cada nodo de la lista.
Mientras el atributo enlace del nodo almacene un valor que sea distinto a “w” debemos avanzar al
siguiente objeto.
El avance al siguiente objeto se realiza asignando el contenido del atributo enlace al objeto que recorre
la lista.
El atributo enlace de este nodo es distinto a “w”, por lo tanto avanzamos al siguiente.
Finalmente, vemos que el atributo enlace es igual a “w” por lo tanto, la condición es falsa, terminando
así el recorrido.
Apuntes.
Linked Lists respecto a Arrays...